php响应超过三十秒会报错么,如何捕捉致命错误:PHP中超过30秒的最大执行时间...
你唯一的select是增加允许的执行时间(将其设置为0使其无限,但不推荐)或产生一个新的线程,并希望最好的。
这是不可捕捉的原因是它并没有真正抛出。 没有一行代码实际上触发了这个错误,而是PHP说:“不,不好意思,这太长了,现在closures了。 这是有道理的。 想象一下,一个脚本的最大执行时间为30秒,捕捉到这个错误,又花了30秒…在一个devise不好的程序中,开辟了一些相当恶劣的利用机会。 它至less会为DOS攻击创造机会。
如何尝试PHP文档(以及至less有一个读者)说:
看看下面的链接:
这不是一个例外,这是一个错误。 exception和错误之间有重要的区别,首先,错误不能被try / catch语义捕获。
PHP脚本是build立在执行时间短的范例之上的,所以PHP默认configuration为假设脚本运行时间超过30秒,它必须被陷入无限循环,因此应该被终止。 这是为了防止错误的PHP脚本导致拒绝服务,无论是意外或恶意的意图。
但是,脚本有时需要比默认分配更多的运行时间。
您可以尝试通过使用set_time_limit()或通过更改php.ini文件中max_execution_time的值来提高限制来更改最大执行时间。 您也可以通过将执行时间设置为0来完全删除限制,但不build议这样做。
set_time_limit()可能被诸如disable_functions的机制禁用,所以它可能对您不可用,同样,您可能无法访问php.ini 。 如果这两种情况都是这样,那么你应该联系你的主机寻求帮助。
PHP脚本从命令行运行是个例外。 在这些运行条件下,PHP脚本可能是交互式的,需要花费很长时间处理数据或等待input。 为此,默认情况下,从命令行运行的脚本没有max_execution_time限制。
你无能为力。 但是可以使用register_shutdown_function进行正常closures
在某些情况下,处理“致命错误:最大执行时间超过30秒”的方法有点棘手:
function time_sublimit($k = 0.8) { $limit = ini_get('max_execution_time'); // changes even when you set_time_limit() $sub_limit = round($limit * $k); if($sub_limit === 0) { $sub_limit = INF; } return $sub_limit; }
在您的代码中,您必须测量执行时间并在超时之前抛出exception,否则可能会触发致命错误。 $ k = 0.8是允许执行时间的80%,所以你有20%的时间来处理exception。
try{ $t1 = time(); // start to mesure time. while (true) { // put your long-time loop condition here time_spent = time() - $t1; if(time_spent >= time_sublimit()) { throw new Exception('Time sublimit reached'); } // do work here } } catch(Exception $e) { // catch exception here }
我想出了这个答案@ pinkal-vansia给了。 所以我不是要求一个原始的答案,而是一个实际应用的答案。 我需要一种方法让页面在超时的情况下自行刷新。 由于我已经观察到我的cURL脚本有足够的超时时间来知道代码正在工作,但有时出于某种原因无法连接到远程服务器,或者完全读取所提供的html,并且在刷新后问题消失,没有问题的脚本刷新自己“治愈”一个最大执行超时错误。
仅供参考,对于正在运行的抓取脚本来说,300秒不会太长,只需要一点点就可以从我正在抓取的各种页面中提取数据。 有时由于连接不正常而仅仅过了几秒钟。 了解到连接时间有时会失败,而不是脚本处理,最好不要增加超时,而只是自动刷新页面,然后重试。
是的,我通过TheJanOnlinetesting了解决scheme。 sleep()不计入php的执行时间,所以这里是工作版本与无限循环:
把这个在PHP文件的开始
编辑1
但首先检查是否没有这样的代码:
while (1=1) { echo '=)'; }
编辑2
抓住这个错误看看set_error_handler
php响应超过三十秒会报错么,如何捕捉致命错误:PHP中超过30秒的最大执行时间...相关推荐
- 今日发现导出dbf类型为dBASE IV的文件,数据列不能超过40个,否则报错“字段将不能置于记录中”
今日发现导出dbf类型为dBASE IV的文件,数据列不能超过40个,否则报错"字段将不能置于记录中" 一开始还以为其他问题呢,结果逐步排除,中英文列名,均可,各种定义列方式,最后 ...
- 视觉SLAM十四讲 报错 Could not find a configuration file for package “OpenCV“ that is compatible with reques
视觉SLAM十四讲 报错 Could not find a configuration file for package "OpenCV" that is compatible w ...
- 视觉SLAM十四讲 报错ch13 问题汇总 /usr/bin/ld: /usr/local/lib/libfmt.a(format.cc.o)
视觉SLAM十四讲 报错ch13 /usr/bin/ld: /usr/local/lib/libfmt.a 1. 问题1:未链接fmt库 1.1 解决方案 2. 问题2:-fPIC 2.1 解决方案 ...
- SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出
SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出- - 腾讯云开发者社区-腾讯云 遇到的问题 判断应该数值 金额类超过最大值了
- SAP 对HU做货物移动报错-Only 0 serial numbers entered instead of 30 -
SAP 对HU做货物移动报错-Only 0 serial numbers entered instead of 30 - 元旦刚过,就收到客户的业务人员报错说,当其对HU做转库(同一个公司代码下工厂到 ...
- SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出-
SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出- 如下对采购订单 4100000586执行MIGO做收货, 过账之前的检查,没有问题.过账, 在例程W ...
- android 定时器5秒执行一次,如何在android中每30秒执行一次查询?
我有一个查询,我想每30秒执行一次并将其记录到Logcat.我是通过处理程序完成的,我没有得到回应.如何在android中每30秒执行一次查询? 这里是我的代码: runnable = new Run ...
- intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 有用
intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 2017年12月29日 15:04:15 佛空如水 阅读数:795 报错: 解决: 第 ...
- Java编译报错:无法将类XX中的构造器XX应用到给定类型
1.idea新版本搜不到lombok插件? 报错如图: 实体类: 编译的时候报错... 下载的最新版本idea,2021.1.1 不对啊,老版本都没问题的 突然想到虽然有lombok的依赖包,但是插件 ...
最新文章
- 2019年终总结:好好爱自己
- 收藏|56张图片带您认识细菌长啥样?
- ACE - Reactor模式源码剖析及具体实现(大量源码慎入)
- 如何高效备考信息系统项目管理师?
- 「LibreOJ NOI Round #2」不等关系 (dp+NTT分治)
- 【算法】希尔排序 推导方法
- html 前端传入后台为object_浅谈Object.defineProperty()
- 如何将商业策略与项目管理相关联
- 尺度不变特征变换(SIFT算法)Matlab程序代码测试例子的说明(Lowe的代码)
- java连接Neo4j服务器
- 19年Q2了,运维的你有啥计划吗?
- 二手机床:中国高端机床装备制造列入战略性产业
- Windows服务器tomcat日志拆分(cronolog )
- Python数据分析pandas入门练习题(七)
- Codeforces Round #555 (Div. 3), problem: (C2) Increasing Subsequence (hard version)【贪心+撞到南墙也不回头】
- 摄影测量期末复习cumt
- 《中文核心期刊要目总览(2014年版)》——计算机、自动化类
- vue.js (制作电商网站)知识点总结一 待补充
- Android之电话拨号器
- 超级狗无法识别到开发狗
热门文章
- Java系列(1) JavaEE架构
- selinux 的管理
- EMOS 如何停止反病毒和防垃圾邮件功能
- [HTML]去除li前面的小黑点,和ul、LI部分属性
- 超级强大的心理定律~~!你可以变成你想要的样子!~
- Lucene学习笔记(1)
- 2440启动代码分析
- HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测
- 科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用
- C/C++语言变量声明内存分配