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);
- ?> 網站建設(fblww-0227)
歡迎關注本站公眾號,獲取更多信息