php循环执行一个文件时,如何让一个超时执行的跳过去,而不是中断执行程序

2024-11-16 02:35:24
推荐回答(2个)
回答1:

用多进程的方式,你要先学习php实现多进程的方法。主要用到了pcntl和posix两个扩展
思路是
开一个子进程,计算工作由子进程进行
主进程等待子进程的同时计时
如果超时,就杀掉子进程
不过前提是你系统是linux

// 代码没调试哦
$pid=pcntl_fork();
if ($pid == 0) {
// 复杂的计算
} else if ($pid > 0) {
$t = time();
while (true) {
$pid= pcntl_wait($s, WNOHANG);
if ($pid > 0) break;
else if ($pid < 0) {
echo 'error';
break;
}
else if (time() - $t > 30) {
posix_kill($pid, SIGKILL);
echo 'timeout';
} else {
sleep(1);
}
}
}

回答2:

模拟多线程,http://zhidao.baidu.com/question/72879780.html