PHP fsockopen速度很慢
我正在使用PHP中的IMAP协议,使用fsockopen发送和接收命令。我的初步实验成功了,但速度太慢了。运行下面的简单函数大约需要2分钟。我尝试了几种不同的IMAP服务器,得到了相同的结果。有人能告诉我为什么这个代码这么慢吗PHP fsockopen速度很慢,php,networking,performance,imap,fsockopen,Php,Networking,Performance,Imap,Fsockopen,我正在使用PHP中的IMAP协议,使用fsockopen发送和接收命令。我的初步实验成功了,但速度太慢了。运行下面的简单函数大约需要2分钟。我尝试了几种不同的IMAP服务器,得到了相同的结果。有人能告诉我为什么这个代码这么慢吗 <?php function connectToServer($host, $port, $timeout) { // Connect to the server $conn = fsockopen($host, $port, $errno, $e
<?php
function connectToServer($host, $port, $timeout) {
// Connect to the server
$conn = fsockopen($host, $port, $errno, $errstr, $timeout);
// Write IMAP Command
$command = "a001 CAPABILITY\r\n";
// Send Command
fputs($conn, $command, strlen($command));
// Read in responses
while (!feof($conn)) {
$data .= fgets($conn, 1024);
}
// Display Responses
print $data;
// Close connection to server
fclose($conn);
}
connectToServer('mail.me.com', 143, 30);
?>
似乎在远程端超时并关闭连接之前,
feof
不会返回true。您传递的$timeout
参数仅适用于初始连接尝试
尝试更改while循环以直接打印状态:
while (!feof($conn)) {
print fgets($conn, 1024);
}
或者在读取完整回复后将循环退出条件更改为中断。它可能必须在协议方面更加明智
最后,我不得不问,为什么不使用PHP?似乎在远程端超时并关闭连接之前,
feof
不会返回true。您传递的$timeout
参数仅适用于初始连接尝试
尝试更改while循环以直接打印状态:
while (!feof($conn)) {
print fgets($conn, 1024);
}
或者在读取完整回复后将循环退出条件更改为中断。它可能必须在协议方面更加明智
最后,我不得不问,为什么不使用PHP?我希望能够在没有安装IMAP扩展的服务器上使用IMAP,例如共享主机环境。谢谢,看起来就是这样!这种解决办法已经存在。phpclasses.org上有很多,你可以试试这个:是的,我都看过了。我只是更喜欢自己动手修补。学习比什么都重要。谢谢你!这并没有解决我的问题。我有100台本地PC,当我需要实时时,它无法工作。我希望能够在没有安装IMAP扩展的服务器上使用IMAP,例如共享主机环境。谢谢,看起来就是这样!这种解决办法已经存在。phpclasses.org上有很多,你可以试试这个:是的,我都看过了。我只是更喜欢自己动手修补。学习比什么都重要。谢谢你!这并没有解决我的问题。我有100台本地PC,当我需要实时时,它不工作。