PHP Ping нет ответа

#php #laravel #ping #valet

#php #laravel #пинг #valet

Вопрос:

Я запускаю локальную среду разработки, используя larval valet на моем Mac. И я пытаюсь пропинговать хост, однако я никогда не получаю ответа.

Запуск простой команды оболочки, такой как «ls», работает и дает ожидаемый результат.

Код

 function getStatus($name) {
    $ip =   "1.1.1.1";
    exec("ping -n 3 $ip", $output, $status);
    print_r($output);
    print_r($status);
}
 

Вывод:

 Array ( ) 127
 

Ответ №1:

Поскольку ping выполняется в бесконечном цикле в системах * NIX, вы должны ограничить количество выполняемых им запросов. Я подозреваю, что вы пытались сделать это с -n помощью параметра, однако подходящим для этого было -c бы значение, которое означает «count».

Поэтому вы должны выполнить ping следующим образом:

 exec("ping -n 3 $ip", $output, $status);
 

И это работает нормально:

 Array
(
    [0] => PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
    [1] => 64 bytes from 1.1.1.1: icmp_seq=1 ttl=58 time=8.71 ms
    [2] => 64 bytes from 1.1.1.1: icmp_seq=2 ttl=58 time=8.71 ms
    [3] => 64 bytes from 1.1.1.1: icmp_seq=3 ttl=58 time=8.82 ms
    [4] =>
    [5] => --- 1.1.1.1 ping statistics ---
    [6] => 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    [7] => rtt min/avg/max/mdev = 8.713/8.751/8.824/0.119 ms
)   
 

Примечание стороны:
-n Параметр также существует, но просто указывает ping принимать только числовой ввод — IP-адреса, а не имена хостов.

Со страницы руководства: https://ss64.com/osx/ping.html

 -n         Numeric output only. No attempt will be made to lookup symbolic
           names for host addresses.