工作里用户有个需求:
某个系统挂掉了,要立马给他们打告警电话
最简单的实现方式,那就是ping ip了,php里有exec方法可以用来调用命令。
但是由于ping命令在windows和linux下执行效果不一样,exec执行后结果也有不同,所以编写程序时需要针对系统稍微留意一下。
windows系统下,如果可以ping通的话,收到4行数据包就结束了:
可Linux系统下,如果咱们不人为终止的话,它会一直运行下去:
本文为翟码农个人博客里技术大类下php分类的文章,转载请注明出处:http://www.zhai14.com/blog/different-result-got-when-ping-a-certain-ip-via-php-in-windows-or-linux.html
$command = "ping xxx.xxx.xxx.xxx"; exec($command, $output, $return); echo $return; print_r($output);
如果ip不可以访问,windows下结论如下:
Linux下执行上面ping命令需要加个时间限制,否则由于它会一直执行,最终报超时错误:
$command = "timeout 10 ping xxx.xxx.xxx.xxx"; exec($command, $output, $return); echo $return; print_r($output);
如果ip不可以访问,最终linux下运行后结论如下:
由于我们系统是Linux,所以通过判断$output是否为空就可以实现判断Ip是否可以访问了。
if(empty($output)){ throw new \Exception("Haikang System Network Crashed"); }