Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.31;
Скачать: CL | DM;

Вниз

Сокеты, php, ftp -- вопрос специалистам   Найти похожие ветки 

 
Nous Mellon_   (2008-07-11 15:23) [0]

Доброе время суток, друзья. Есть небольшой пхп скрипт, который работает по фтп протоколу. Он коннектится к моему домену и обновляет там всякую инфы. Работает он не через стандартные ftp_ ф-ции php, а напрямую посылает ФТП команды серверу через используя сокеты.
Естественно, фтп сервер возвращает ответы, которые скрипту нужно анализировать. Обычно ответы возвращаются одной строкой и делаю
$response = trim(fgets($this->socks,256));
сюда помещается ответ от сервера. Проблема в том, что ответ иногда бывает в нескольких строках(напр. когда произошла некая ошибка), а программа читает одну и при анализе след. ответа читает не нужную строку, а вторую из пред. ответа и происходит сбой. Тут нужно как-то проверить есть ли в сокете, грубо говоря, еще сообщения. К сожалению, я в этом не очень хорошо разбираюсь, основу модуля писал не я поэтому обращаюсь к вам. Самое банальное, что я понял здесь следует сделать это feof($sock) и цикл, но тут проблема возникает что если больше инфы в сокете нет, условие все равно не срабатывает и прога подвисает. Наверно я туплю, но буду благодарен за любую помощь


 
Юрий ©   (2008-07-11 15:28) [1]

<?php

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET / HTTP/1.1\r\n";
   $out .= "Host: www.example.com\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp, $out);
   while (!feof($fp)) {
       $result .= fgets($fp, 128);
   }
   fclose($fp);
}

$headers = split("\r\n", substr($result, 0, strpos($result, "\r\n\r\n")));
$content = substr($result, strpos($result, "\r\n\r\n") + 4);

?>

(с) http://ru2.php.net/fsockopen


 
Nous Mellon_   (2008-07-11 16:51) [2]

О, спасибо большое -- буду пробовать, похоже на то что мне нужно, по результату отпишусь


 
Nous Mellon_   (2008-07-12 12:05) [3]

Попробовал, не получается. Т.е. если например в ответе от сервера одна строка, то цикл после первой итерации тупо виснет


 
Nous Mellon_   (2008-07-12 12:44) [4]

Неактуально, проблема решена. Спасибо phpclasses.org



Страницы: 1 вся ветка

Текущий архив: 2008.08.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
15-1215499199
oldman
2008-07-08 10:39
2008.08.31
Adobe Flash Player поновей бы...


15-1216030875
denic
2008-07-14 14:21
2008.08.31
В какой программе


1-1197184274
Lamer666
2007-12-09 10:11
2008.08.31
Как сделать необычную ФОРМУ с TImage-ем?


2-1216902939
Alex_C
2008-07-24 16:35
2008.08.31
Как правильно дождаться сбытия?


15-1215874647
@!!ex
2008-07-12 18:57
2008.08.31
редактирование свойств как в Object Inspector e