fsockopen - 如何检测消息结束?
fsockopen - how to detect end of message?
我有代码:
$f = fsockopen('mail.myserver.com', 110); //POP3
echo fgets($f, 4096) . '<hr>';
fputs($f, "USER login@myserver.com\r\n");
echo fgets($f) . '<br>';
fputs($f, "PASS mypass\r\n");
echo fgets($f) . '<br>';
fputs($f, "LIST\r\n");
echo fgets($f) . '<br>';
fputs($f, "RETR 1\r\n");
到目前为止一切顺利,但我有一个循环来接收整个消息:
while (!feof($f))
{
echo fgets($f, 1280);
}
这需要很长时间,因为脚本会等待超时开始——它从不自己检测 EOF。
如何检测 EOF 并在超时前中断循环?如果我使用 telnet,那么一切正常——telnet 客户端以某种方式知道何时停止接收。
我有代码:
$f = fsockopen('mail.myserver.com', 110); //POP3
echo fgets($f, 4096) . '<hr>';
fputs($f, "USER login@myserver.com\r\n");
echo fgets($f) . '<br>';
fputs($f, "PASS mypass\r\n");
echo fgets($f) . '<br>';
fputs($f, "LIST\r\n");
echo fgets($f) . '<br>';
fputs($f, "RETR 1\r\n");
到目前为止一切顺利,但我有一个循环来接收整个消息:
while (!feof($f))
{
echo fgets($f, 1280);
}
这需要很长时间,因为脚本会等待超时开始——它从不自己检测 EOF。
如何检测 EOF 并在超时前中断循环?如果我使用 telnet,那么一切正常——telnet 客户端以某种方式知道何时停止接收。