[英]PHP - Ping exec on Linux hangs script
我有一個簡單的PHP腳本設置來檢查服務器的狀態。 它使用通過exec()運行的標准ping命令。
通過控制台使用同一命令ping可以正常工作並正確超時。
原因是什么,如何解決?
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$exec_string = 'ping -n 1 -i 255 -w 2 ' . $host;
} else {
$exec_string = 'ping -n -c 1 -t 255 -w 2 ' . $host;
}
exec($exec_string, $output, $return);
我會避免直接使用exec()
ping操作。 我使用此腳本, 位於此處 ,還可以設置端口和超時:
function ping($host, $port = 80, $timeout = 6) {
$fsock = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fsock) {
return false;
} else {
return true;
}
}
$host = 'www.example.com';
if(ping($host)) {
echo "HOST UP";
} else {
echo "HOST DOWN";
}
我不確定為什么,但是從suPHP切換到fastCGI(都啟用了suEXEC)似乎可以解決該問題,並且ping可以按預期正確地超時。
如果有人對此有解釋,我想知道以評論或答案的形式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.