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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端代码标准最佳实践:javascript篇

前言 最近一直重构项目的前端代码,也参考了各种前端代码的最佳实践,目的是让前端的HTML,CSS,Javacript代码更符合标准,有更好的性能,更好的可维护性,尝到了重构后的甜头,也萌生了写这个系列博客的念头。前端…

配置springboot在访问404时自定义返回结果以及统一异常处理

在搭建项目框架的时候用的是springboot,想统一处理异常,但是发现404的错误总是捕捉不到,总是返回的是springBoot自带的错误结果信息。 如下是springBoot自带的错误结果信息: 1 { 2 "timestamp": 1492063521109, 3 &…

nginx配置php 9000,Nginx支持php配置

Nginx本身是不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux 下是socket,(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wra…

用例写到抽筋

这几天是第一次写web类的测试用例,不得不说,写web类的测试用例真是会写死人,每一项都要至少写一个测试用例,就算以一项一个用例来算,一个非常非常简单的网站都要写上上百个测试用例。比如说今天写的测试用例中&#xf…

ansible 判断和循环

标准循环 模式一 - name: add several usersuser: name{{ item }} statepresent groupswheelwith_items:- testuser1- testuser2 orwith_items: "{{ somelist }}" 模式2. 字典循环- name: add several usersuser: name{{ item.name }} statepresent groups{{ item.g…

Windows XP中快速识别真假SVCHOST.EXE

SVCHOST.EXE是基于NT核心技术的操作系统非常重要的进程,它提供许多系统服务,比如远程过程调用系统服务 (RPCSS)、动态主机配置协议(DPCH) 服务等与网络相关的服务。现在广大计算机用户普遍使用的Windows XP、Windows 2003等操作系统都涉及该进…

php require 500,thinkphp5出现500错误怎么办

thinkphp5出现500错误,如下图所示:require(): open_basedir restriction in effect. File(/home/wwwroot/pic/thinkphp/start.php) is not within the allowed解决方法:1、我是lnmp1.4 php5.6,php.ini里面的open_basedir 是注释掉…

eclipse从svn导入maven项目变成普通项目解决办法

右击项目-->configure-->Convert to Maven Project转载于:https://www.cnblogs.com/zhanzhuang/p/9105463.html

php安装soap扩展

例: 1、编译安装 解压对应php版本安装包 进入解压后的ext目录 phpize --生成configure文件,报以下错误,可以忽略 ------------------------------------------------------------------------------ Configuring for: PHP Api Version: …

php yaf 教程,Yaf教程2:入门使用

接下来我们通过最简单的“hello yaf”例子说明 Yaf 的用法,然后一步步走向更加复杂的用法。Yaf的PHP官方手册位置是:http://php.net/manual/zh/book.yaf.php,这比鸟哥(Yaf作者)自己博客 http://www.laruence.com/manual/的文档要新&#xff0…

在移动端项目中使用vconsole

1.先在项目中引入 <script type"text/javascript" src"vconsole.min.js"> 2.初始化vConsole window.vConsole new window.VConsole({defaultPlugins: [system, network, element, storage], // 可以在此设定要默认加载的面板maxLogNumber: 1000 });…

如何创建路径别名

在访问页面时&#xff0c;页面地址会以 DocumentRoot所指定的路径为相对路径&#xff0c;但若不想使用指定的路径&#xff0c;则需要创建路径别名。假如DocumentRoot为/var/www/html &#xff0c;现想将/var/www/html/mail 建立别名/web/mail&#xff0c;该如何修改呢&#xff…

matlab矩阵除以一个数字,matlab矩阵中每一行数除以一个数 | 学步园

例如&#xff1a;用a中每一行数除以x中相对应的每一个数x[5 10 6 8 16 6 8 8 22 11];a[4 4 4 5 4 4 4 4 3 46 8 6 2 6 8 8 6 8 64 4 4 4 6 4 4 4 6 44 6 6 4 6 6 6 4 7 410 14 14 10 12 12 12 10 14 123 5 5 3 6 3 3 4 5 44 6 7 4 4 4 4 4 6 64 6 6 6 5 6 5 5 7 613 16 19 16 1…

Redis(四):Spring + JedisCluster操作Redis(集群)

1.maven依赖&#xff1a; <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> </dependency> 2.增加spring 配置 <!-- JedisCluster配置 --> <bean …

js对象数组转java对象数组对象数组对象数组对象,前台js数组json字符串,后台json转为对象数组的具体实现...

$("#savaUserSet").click(function(){var JSONArr[];$("i[nameeventName]").each(function() {//获取所有name属性为eventName的i标签,并遍历if(!($(this).hasClass("active"))){var eventCode$(this).attr("id");var eventName$(this…

matlab绘制烟花,[原创]利用MATLAB燃放烟花(礼花)

function firework% 烟花烟花满天飞% CopyRight&#xff1a;xiezhh(谢中华)% 2011.6.25OldHandle findobj( Type, figure, Tag, FireWork ) ;if ishandle(OldHandle)close(OldHandle) ;end% 图形窗口初始化fig figure(units,normalized,position,[0.1 0.1 0.8 0.8],...menuba…

33 -jQuery 属性操作,文档操作(未完成)

转载于:https://www.cnblogs.com/venicid/p/9110130.html

GNU C - 关于8086的内存访问机制以及内存对齐(memory alignment)

接着前面的文章&#xff0c;这篇文章就来说说menory alignment -- 内存对齐. 一、为什么需要内存对齐&#xff1f; 无论做什么事情&#xff0c;我都习惯性的问自己&#xff1a;为什么我要去做这件事情&#xff1f; 是啊&#xff0c;这可能也是个大家都会去想的问题&#xff0c;…

mysql权限说法正确的是,【多选题】下面关于修改 MySQL 配置的说法中,正确的是...

参考答案如下【单选题】4.正常枕先露分娩时&#xff0c;多选的说仰伸发生于()39、题下【单选题】人们常常用来判断一种活动是不是游戏的一项外部指标是( )面关【多选题】S-S法阶段2训练内容包括于修【判断题】痉挛性睑内翻多发生于下睑。配置【判断题】萤火虫不仅成虫会发光,其…

读取exchange邮件的未读数(转载)

protected void Page_Load(object sender, EventArgs e) { Response.Write("administrator的未读邮件数是&#xff1a;" UnReadCount("administratordomainname")); } int UnReadCount(string userMailAddress) {…