Главная страница
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.014 c
2-1216906793
wiii
2008-07-24 17:39
2008.08.31
TToolBar, хочу сделать наследника


1-1197536361
Soulless
2007-12-13 11:59
2008.08.31
qreport,. cannot create file


3-1204731053
nstur
2008-03-05 18:30
2008.08.31
Как в ADO открыть запароленную БД Access


15-1215718737
wl
2008-07-10 23:38
2008.08.31
Castalia.


11-1193002581
Elec3C
2007-10-22 01:36
2008.08.31
Системное меню Edit а