php循环执行一个文件时,如何让一个超时执行的跳过去,而不是中断执行程序
发布网友
发布时间:2022-05-18 21:06
我来回答
共2个回答
热心网友
时间:2023-11-03 18:20
用多进程的方式,你要先学习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);
}
}
}
热心网友
时间:2023-11-03 18:20
模拟多线程,http://zhidao.baidu.com/question/72879780.html