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

假设要计算某个文本里面每行一列的算式,循环执行下去
但是某一行的计算可能很复杂超过了预定义的时间比如30秒
要怎么实现当这个程序执行时间超过了30秒
那么就跳过这行继续执行下一行的计算
因为用set_time_limit()会直接导致程序执行中断
好了再加分

用多进程的方式,你要先学习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);
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-01

几种常见的PHP超时处理方法
在php.ini中,有一个参数max_execution_time可以设置PHP脚本的最大执行时间,但是,在php-cgi(php-fpm)中,该参数不会起效。真正能够控制PHP脚本最大执行时: <valuename="request_terminate_timeout">0s<\/value> 就是说如果是使用mod_php5.so的模式运行max_execution_time是会生效的,但是如果是php-fpm模式中运行...

PHP如何每隔10秒进行输出一次输出?
php的执行是一定要触发的,不会自动去执行。你可以在程序里加入sleep(10);这句罢。这句会让程序挂起10秒,然后继续,理论上可以。不过好像响应时间太久的话,连接会中断的吧。你可以把数据库的内容全部读出来并赋给一个javascript的数组,再用javascript的setTimeout方法进行输出。当然也可以用ajax来完成...

如何使用fsockopen函数实现异步执行PHP
Web服务器执行一个PHP脚本,有时耗时很长才能返回执行结果,后面的脚本需要等待很长一段时间才能继续执行。如果想实现只简单触发耗时脚本的执行而不等待执行结果就直接执行下一步操作,可以通过fscokopen函数来实现。PHP支持socket编程,fscokopen函数返回一个到远程主机连接的句柄,可以像使用fopen返回的句柄...

php foreach循环大的数据量,在其执行1个多小时后就中断了?有可能是什...
1. 超出脚本内存限制 2. 超出脚本执行时间限制 试下下面这样:set_time_limit(0);ini_set('memory_limit', '1000M');\/\/自己根据实际调整

php exit(1) 不能退出用popen启动的进程
。PHP 和系统程序是两回事。。你用 popen 只是让 PHP 对系统下令执行了某个功能。之后 PHP 等待执行结果。也就是说,PHP 只是一个下命令的人,执行这个事情的是操作系统。你用 exit 只能中断 PHP 的等待,而已经执行的应用程序方面,如果它不能自己结束运行,那你得用另一个命令去 kill 了它。

php 怎样中断程序
在PHP中,常用exit()来中断程序操作,当然还有比如die(),这个和exit()是一样的。输出内容时可以使用echo $变量名或echo “字符串",还可以用print()或print_r()。不同在于echo是语句,print()和print_r()是函数。希望对你有用。

qutarz如何设置一小时内每一分钟执行一次
这个值可以通过设置 php.ini 的 max_execution_time 或 Apache .conf 设置中对应的“php_value max_execution_time”参数或者 set_time_limit() 函数来更改。当计数器超时的时候,脚本将会类似于以上连接中断的情况退出,先前被注册过的关闭触发函数也将在这时被执行。在该关闭触发函数中,可以通过调用 ...

谁在用 PHP 的时候遇到过这样的错误
很难会被发现。一个异常则是在一个程序执行过程中出现的一个例外,或是一个事件,它中断了正常指令的运行,跳转到其他程序模块继续执行。所以异常处理经常被当做程序的控制流程使用。无论是错误还是异常,应用程序都必须能够以妥善的方式处理,并做出相应的反应,希望不要丢失数据或者导致程序崩溃。

php函数,如何中断?
在函数里面用 function 函数名(){ return 要返回的值 } 这种方式来返回,你return之后这个函数就自动终止了return之后的代码就无效了

php高级教程
不过,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的 PHP 函数。 创建自定义错误处理器 创建一个自定义的错误处理器,可以在PHP 中发生错误时调用该函数。 该函数必须有能力处理至少两个参数(error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 以及error...

相似回答