Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];

Вниз

Сокеты, 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
2-1216835667
valer4
2008-07-23 21:54
2008.08.31
try..finally


15-1215731365
wl
2008-07-11 03:09
2008.08.31
тестирую AlphaControls v5.45b. Как это выглядит у вас?


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


15-1215768527
Правильный*Вася
2008-07-11 13:28
2008.08.31
только что касперский выдал


15-1215675321
Guest
2008-07-10 11:35
2008.08.31
Как посчитать: сколько молекул в литре воды?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский