同时ping多个ip找了最快的ip网的php实例

作者:袖梨 2022-06-24


为了翻墙方便 ,买了个vpn,转到osx下面官方没有提供合适的客户端,无法选择最快的线路。于是就自己写了个脚本,手动ping出最快的IP.

 代码如下 复制代码
$servers = array(
    array('VIP荷兰线路01','nl01.yyuu.me','81.4.105.195','4122或3108'),
    array('VIP法国线路01','fr01.yyuu.me','176.31.206.242','4122或3108'),
    array('VIP意大利线路01','it01.yyuu.me','37.247.48.226','4122或3108'),
    array('VIP新加坡线路01','sg01.yyuu.me','128.199.69.209','4122或3108')
);


//配合pcntl_signal使用
declare(ticks=1);
//最大的子进程数量
$max = count($servers);
//当前的子进程数量
$child = 0;

//当子进程退出时,会触发该函数
function sig_handler($sig) {
    switch($sig) {
        case SIGCHLD:
            //do something
    }
}

//注册子进程退出时调用的函数
pcntl_signal(SIGCHLD, "sig_handler");
foreach($servers as $server){
    $pid = pcntl_fork();
    if($pid){
        //echo 'main thread start',PHP_EOL;
    }else{
        exec('ping -c 1 '.$server[2],$result);
        echo $server[1].' '.$server[2].' '.$result[1],PHP_EOL;
        exit();
    }
}

相关文章

精彩推荐