【发布时间】:2012-05-14 00:57:42
【问题描述】:
这是我正在使用的代码:
if (!($fp = fsockopen('ssl://imap.gmail.com', '993', $errno, $errstr, 15)))
echo "Could not connect to host";
$server_response = fread($fp, 256);
echo $server_response;
fwrite($fp, "C01 CAPABILITY"."\r\n");
while (!feof($fp)) {
echo fgets($fp, 256);
}
我得到第一个回应:
OK Gimap ready for requests from xx.xx.xx.xx v3if9968808ibd.15
但随后页面超时。我已经搜索了 stream_set_blocking、stream_set_timeout、stream_select、fread 等,但无法让它工作。我需要读取服务器发送的所有数据,然后继续执行其他命令(我将使用 imap 检索电子邮件)。
谢谢
【问题讨论】:
-
您确定响应只有 256 个字符吗?你确定套接字是可写的吗?您的脚本可能挂在
fwrite()上,因为套接字不可写... -
是的。我通过简单地编写 fgets($fp,256) 两次来替换 while 循环来测试它。这是我得到的响应: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH C01 OK
标签: php fread fgets fsockopen feof