Вот такая трабла у мну:
Есть быдлокод:
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;
}