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上阻塞。不过比起并行的来说,已经快了好几倍。

浙公网安备 33010602011771号