Я использую 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/портов, которые я получаю в списке (команда 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 онлайн».
Я не знаю, что еще я могу вам сказать? Загрузка коллекции результатов занимает целую вечность...
stackoverflow.com
илиexample.com
или около того). Проблема почти наверняка не в выложенном вами отрывке. Также обратите внимание, что вы не должны вызывать fclose, если$socket === false
. - person phihag   schedule 06.03.2011fsockopen("localhost")
, и это было ужасно медленно (~ 1010 мс). сfsockopen("127.0.0.1")
это было намного быстрее (~ 11 мс). - person Piotr   schedule 23.07.2014