php Popen はマルチタスクを実現します
<?php $update_num = 1000; $limit = 100; $p_num = 0; $line_cmd = 'ps -ef | grep doit.php | grep -v grep | wc -l'; $exec_cmd = '/usr/local/php/bin/php doit.php %s & > /dev/null 2>&1'; $t1 = microtime(1); for($i = 0 ; $i < $update_num ; $i++){ if($p_num <=0){ $fp1 = popen($line_cmd,'r'); //current shell process numbers $line = fread($fp1,512); pclose($fp1); //processes can be pushed $p_num = $limit - $line; if($p_num <= 0 ){ usleep(100); } } $p_num = $p_num -1; $cmd = sprintf($exec_cmd,$i); $fp = popen($cmd,'r'); pclose($fp); } $t2 = microtime(1); echo round($t2 - $t1,2); ?>
<?php sleep(2); $fp = fopen('doit.txt','a'); fwrite($fp,$argv[1]."\n"); fclose($fp); exit(0); ?>