Главная страница
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.012 c
10-1147542762
RUNaum
2006-05-13 21:52
2008.08.31
Как понять что ActiveX в "design-time"?


1-1197552021
Zheksik
2007-12-13 16:20
2008.08.31
запретить вывод на консоль


15-1215634451
@!!ex
2008-07-10 00:14
2008.08.31
CALLBACk процедура как часть класса в С++


4-1195919041
savyhinst
2007-11-24 18:44
2008.08.31
Картинка


2-1216808609
Тоша
2008-07-23 14:23
2008.08.31
TMemoryStream