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";
}
}