php都是通过crontabd定时脚本处理队列的,面试被问到php如何常驻进程进行处理队列,想了半天这样不知道是否是一种方式
<?php
function logs() { file_put_contents("/www/wang/logs/".date("Y-m-d",time()).".txt",date("Y-m-d H:i:s").PHP_EOL,FILE_APPEND);
}
$i = 1; while(true){
fork("logs();");
sleep(1); //$i++; }
function fork($code) { $pid = pcntl_fork(); if ($pid == 0) { echo "forking 子进程---------pid:".getmypid().PHP_EOL; eval($code); exit(); } else if($pid > 0) { echo 'Oh my god! I am a father now! my pid is '.getmypid().' ---- My child is'. $pid . PHP_EOL; $quit_pid = pcntl_wait($status); echo "回收子进程:".$quit_pid.PHP_EOL; } else { echo "can not fork"; } }
|
请发表评论