Сокеты

Тема закрыта
182
.
Вот такая трабла у мну:
Есть быдлокод:

public function getData($ch)
{
$data = "";
while($buff = fgets($ch, 1024))
{
$data .= $buff;
if(feof($ch)) break;
}
return $data;
}

если принимаемые с сервера данные меньше одной строки, то с какого-то хера получается бесконечный цикл и скрипт мертво виснет. Почему так - загадко.
Пробовал и такой вариант:

public function getData($ch)
{
$data = "";
while(!feof($ch))
{
$buff = fgets($ch, 1024);
$data .= $buff;
}
return $data;
}
Но результат тот же.
Как решить?
.
Решил траблу. Тему #.
.
Azq2, public function getData($ch)
{
$data = "";
if(strlen($ch) >= 1)
{
while($buff = fgets($ch, 1024))
{
$data .= $buff;
if(feof($ch))
break;

}

}
return $data;
}
пробуй)
.
~XeOn~, $ch - это указатель файла, а не строка. + читай каммент выше, проблема уже исправлена.
.
Блиносвёрт ?
Azq2, а чего не написано, как исправлено?
.
Azq2, Время поста смотри. Я писал когда твоего поста еще небыло.
.
Jane, Написал отдельные функции для приема данных с smtp и pop3 сервера.

public function getSmtpData($ch)
{
$data = "";
while($buff = fgets($ch, 515))
{
$data .= $buff;
if(feof($ch) || substr($buff, 3, 1) == " ") break;
}
return $data;
}

public function getPop3Data($ch)
{
$data = "";
while($buff = fgets($ch))
{
$data .= $buff;
if(feof($ch) || trim($buff) == ".") break;
}
return $data;
}
Всего: 7