脚本作用:持续ping该类服务器,保证中转路由能在业务使用时能够快速响应请求。 ?php define('LOGTAG', 'ping'); declare(ticks = 1); $pid_arr = array(); pcntl_signal(SIGQUIT, 'signal_handler'); pcntl_signal(SIGTE
<?php define('LOGTAG', 'ping'); declare(ticks = 1); $pid_arr = array(); pcntl_signal(SIGQUIT, 'signal_handler'); pcntl_signal(SIGTERM, 'signal_handler'); function run($servers_info) { echo "---------- ping task begin ----------"; global $pid_arr; $index=0; $name_arr = array(); $ip_arr = array(); foreach( $servers_info as $val) { $name_arr[$index] = $val['server_name']; $ip_arr[$index] = $val['server_ip']; $index++; } $worker_count = $index; $index=0; while($index < $worker_count) { $pid = pcntl_fork(); if($pid == -1) { die('could not fork'); } else { if($pid) { $pid_arr[$index] = $pid; } else { while(true) { handle($name_arr[$index], $ip_arr[$index]); sleep(1); } } } $index++; } while (true) { sleep(1); } } function handle($name,$ip) { echo "ping ".$name." ip:".$ip." start!"; exec("ping -c 1000 $ip",$list); echo "ping ".$name." ip:".$ip." finish!"; } function signal_handler($signal) { global $pid_arr; if ($signal == SIGQUIT || $signal == SIGTERM) { foreach ($pid_arr as $pid) { posix_kill($pid,SIGTERM); } echo ”————— ping task finish ----------"; exit(); } } run(); ?>