你唯一的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秒的最大执行时间...相关推荐

  1. 今日发现导出dbf类型为dBASE IV的文件,数据列不能超过40个,否则报错“字段将不能置于记录中”

    今日发现导出dbf类型为dBASE IV的文件,数据列不能超过40个,否则报错"字段将不能置于记录中" 一开始还以为其他问题呢,结果逐步排除,中英文列名,均可,各种定义列方式,最后 ...

  2. 视觉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 ...

  3. 视觉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 解决方案 ...

  4. SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出

    SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出- - 腾讯云开发者社区-腾讯云 遇到的问题 判断应该数值 金额类超过最大值了

  5. SAP 对HU做货物移动报错-Only 0 serial numbers entered instead of 30 -

    SAP 对HU做货物移动报错-Only 0 serial numbers entered instead of 30 - 元旦刚过,就收到客户的业务人员报错说,当其对HU做转库(同一个公司代码下工厂到 ...

  6. SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出-

    SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出- 如下对采购订单 4100000586执行MIGO做收货, 过账之前的检查,没有问题.过账, 在例程W ...

  7. android 定时器5秒执行一次,如何在android中每30秒执行一次查询?

    我有一个查询,我想每30秒执行一次并将其记录到Logcat.我是通过处理程序完成的,我没有得到回应.如何在android中每30秒执行一次查询? 这里是我的代码: runnable = new Run ...

  8. intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 有用

    intellij-IDE运行Java程序报错:java: -source 1.5 中不支持 lambda 表达式 2017年12月29日 15:04:15 佛空如水 阅读数:795 报错: 解决: 第 ...

  9. Java编译报错:无法将类XX中的构造器XX应用到给定类型

    1.idea新版本搜不到lombok插件? 报错如图: 实体类: 编译的时候报错... 下载的最新版本idea,2021.1.1 不对啊,老版本都没问题的 突然想到虽然有lombok的依赖包,但是插件 ...

最新文章

  1. 2019年终总结:好好爱自己
  2. 收藏|56张图片带您认识细菌长啥样?
  3. ACE - Reactor模式源码剖析及具体实现(大量源码慎入)
  4. 如何高效备考信息系统项目管理师?
  5. 「LibreOJ NOI Round #2」不等关系 (dp+NTT分治)
  6. 【算法】希尔排序 推导方法
  7. html 前端传入后台为object_浅谈Object.defineProperty()
  8. 如何将商业策略与项目管理相关联
  9. 尺度不变特征变换(SIFT算法)Matlab程序代码测试例子的说明(Lowe的代码)
  10. java连接Neo4j服务器
  11. 19年Q2了,运维的你有啥计划吗?
  12. 二手机床:中国高端机床装备制造列入战略性产业
  13. Windows服务器tomcat日志拆分(cronolog )
  14. Python数据分析pandas入门练习题(七)
  15. Codeforces Round #555 (Div. 3), problem: (C2) Increasing Subsequence (hard version)【贪心+撞到南墙也不回头】
  16. 摄影测量期末复习cumt
  17. 《中文核心期刊要目总览(2014年版)》——计算机、自动化类
  18. vue.js (制作电商网站)知识点总结一 待补充
  19. Android之电话拨号器
  20. 超级狗无法识别到开发狗

热门文章

  1. Java系列(1) JavaEE架构
  2. selinux 的管理
  3. EMOS 如何停止反病毒和防垃圾邮件功能
  4. [HTML]去除li前面的小黑点,和ul、LI部分属性
  5. 超级强大的心理定律~~!你可以变成你想要的样子!~
  6. Lucene学习笔记(1)
  7. 2440启动代码分析
  8. HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测
  9. 科维PLC运行时系统ProConOS embedded CLR 2.2 特定应用
  10. C/C++语言变量声明内存分配