PHP fsockopen速度很慢

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中的IMAP协议,使用fsockopen发送和接收命令。我的初步实验成功了,但速度太慢了。运行下面的简单函数大约需要2分钟。我尝试了几种不同的IMAP服务器,得到了相同的结果。有人能告诉我为什么这个代码这么慢吗

<?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,当我需要实时时,它不工作。