Linux 上的 PHP Ping 超时不起作用

标签 php linux shell exec ping

我正在使用一个函数来 ping 一些远程 IP 的内部和 ajax 请求。如果 ping 成功,则工作正常,但如果没有响应,则服务器似乎卡住,我必须关闭浏览器。但如果我直接在命令行中输入相同的 shell 函数,超时就会起作用。此外,它在我的本地计算机(WAMP)上使用 -n 运行良好。

功能

public function ping_node($u_ip) {

    exec("/bin/ping -c 2 -w 2 " . $u_ip, $output, $result);

    if ($result == 0){
        return array("ok",$output);
    }else{
        return "fail";
    }
}

}

最佳答案

我永远无法让它工作,相反我使用了 fsockopen。它效果很好,而且速度更快。

function ping_node($ip){
  $socket = @fsockopen($ip, "102", $errorNo, $errorStr, 3);
    if(!$socket) return "fail";
  else return "ok";
}

关于Linux 上的 PHP Ping 超时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21639576/

相关文章:

php - 使用 Php & JQuery 获取 MySQL 记录

php - 如何计算Mysql和php中一个小时内多次发生的事件的总时间(以分钟为单位)

php - 使用括号使用 mysql 查询未检索到正确的结果

c++ - 如何在 C++ 中执行 SQLite 语句

shell - 获取 Spacemacs/Emacs GUI 版本以识别 nix-shell 环境

php - Symfony 服务参数

linux - 从硬盘中查找并复制所有图像

linux - 在多个管道后将输出字符串复制到变量

bash - 是否可以将 getopts 与位置参数混合使用?

linux - 保持 bash 脚本 while 循环条件从打印到控制台