【发布时间】:2011-03-06 16:14:19
【问题描述】:
我正在使用 fsockopen() 调用列表中的多个连接以查看各种 ip/host 和端口的在线状态...
<?php
$socket = @fsockopen($row[2], $row[3], $errnum, $errstr, 1);
if ($errnum >= 1) { $status = 'offline'; } else { $status = 'online';}
fclose($socket);
如果可行,我不会抱怨,但我有大约 15 个 ip/ports 正在列表中检索(php for() 命令..)。我想知道是否有更好的方法来做到这一点?这种方式很慢!?!服务器大约需要 1-2 分钟才能回复所有这些信息。
更新:
<?php
$socket = @fsockopen("lounge.local", "80", $errnum, $errstr, 30);
if ($errnum >= 1) { $status = 'offline'; } else { $status = 'online'; }
?>
它将显示在一个列表中:“ReadyNAS AFP readynas.local:548 online”
我不知道我还能告诉你什么?加载结果集合只需要很长时间......
【问题讨论】:
-
感谢您减少示例代码。但是,请考虑提供一个完整的示例脚本(扫描
stackoverflow.com或example.com左右)。问题几乎肯定不在您发布的摘录中。另请注意,如果$socket === false,则不应调用 fclose。 -
谢谢,自从上传了这个sn-p,我已经把它拿出来了。更新了完整的示例脚本
-
如果有人感兴趣。我使用的是
fsockopen("localhost"),速度非常慢(~1010 毫秒)。使用fsockopen("127.0.0.1")会快得多(~11 毫秒)。
标签: php performance fsockopen