php实现简单的并发

  我要用php实现一个获取多个主机的延迟和丢包率的信息,想通过调用shell命令ping来做,由于主机比较多,如果一个个ping过来非常耗时,所以用popen实现了一个简单的并发。

$result = array();  
$genArr = array();  
for($j = 0; $j < 10; $j++){  
    $genArr[] = popen("ping alibenchdbhost113105.cm4.tbsite.net -c 10 -q", "r");  
}

foreach ($genArr as $index => $handle){  

    $result[] = fread($handle, 1024);      

    usleep(10000);  
    pclose($handle);  
}
var_dump($result);  

当然这个的并发度还不是很高,因为如果子进程没有执行完ping命令,父进程会在fread上阻塞。不过比起并行的来说,已经快了好几倍。

posted @ 2013-05-21 16:20  CobbLiu  阅读(246)  评论(0)    收藏  举报