PHP配置文件的参数max_execution_time表示脚本执行超时时间

max_execution_time=0表示不限制

max_execution_time=2表示执行两秒后终止,同时报错Fatal error: Maximum execution time of 2 seconds exceeded

但是,sleep(10)函数是不起作用的。

例如,php.ini中的max_execution_time=2

执行代码 <?php sleep(10);echo 'ok'; ?> 是不会超时的(前提是web服务器不超时)

执行代码 <?php echo 1;for($i=0;$i<100000000000;$i++){ for($i=0;$i<100000000000;$i++){}} echo 2;?> 会超时,输出1,且报错

注:set_time_limit()函数是可以覆盖max_execution_time参数的,可以比max_execution_time参数大,也可以为0表示不限制,当然

当此函数被调用时,set_time_limit()会从零开始重新启动超时计数器。换句话说,如果超时默认是30秒,在脚本运行了了25秒时调用 set_time_limit(20),那么,脚本在超时之前可运行总时间为45秒


还有一种情况

如果PHP工作在php-fpm模式,例如web服务器是nginx

这时候的超时还取决于php-fpm.conf中的配置request_terminate_timeout

这个参数是这么解释的:the timeout for serving a single request after which the worker process will be killed. This option should be used when the 'max_execution_time' ini option does not stop script execution for some reason.

大概的意思是如果max_execution_time这个参数没有限制脚本的执行,就取决于这个参数的超时,例如,max_execution_time=0;或者max_execution_time大于request_terminate_timeout的值,或者程序中有sleep(),最终的超时都取决于request_terminate_timeout参数;

当然如果程序是因为request_terminate_timeout超时是不会有内容输出的,会报502错误,502 Bad Gateway/Nginx 1.7


综上,总结下列对照表,如果有不对的地方,欢迎大家指正

 

非fpm

max_execution_time=4

fpm

request_terminate_timeout=8

max_execution_time=4

fpm

request_terminate_timeout=4

max_execution_time=8

fpm

request_terminate_timeout=4

max_execution_time=0

<?php

echo 1;sleep(10);echo 2;

?>

输出:12 输出:502 Bad Gateway  输出:502 Bad Gateway  输出:502 Bad Gateway

<?php

echo 1;$i=0;

while($i++<1000000000)

{//假设会执行很久}

echo 2;

?>

输出:1

Fatal error: Maximum execution

time of 4 seconds exceeded

输出:1

Fatal error: Maximum execution

time of 4 seconds exceeded

 输出:502 Bad Gateway  输出:502 Bad Gateway

关于PHP执行超时的问题的更多相关文章

  1. C# 给某个方法设定执行超时时间 C#如何控制方法的执行时间,超时则强制退出方法执行 C#函数运行超时则终止执行(任意参数类型及参数个数通用版)

    我自己写的 /// <summary> /// 函数运行超时则终止执行(超时则返回true,否则返回false) /// </summary> /// <typepara ...

  2. 转 C# 给某个方法设定执行超时时间

    在某些情况下(例如通过网络访问数据),常常不希望程序卡住而占用太多时间以至于造成界面假死. 在这时.我们可以通过Thread.Thread + Invoke(UI)或者是 delegate.Begin ...

  3. Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)

    1. Future接口简介 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API ...

  4. [C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应

    随着数据库数据的不断增大,查询时间也随之增长.而客户端与数据库连接时间以及命令的执行时间都是有限的.默认为30s.所以在查询数据的时候,程序会出现 “超时时间已到.在操作完成之前超时时间已过或服务器未 ...

  5. PostgreSQL执行超时的问题

    PostgreSQL执行超时的问题 使用背景 最近在使用PostgreSQL的时候,在执行一些数据库事务的时候,先后出现了statement timetout 和idle-in-transaction ...

  6. Java程序执行超时——Future接口介绍

    在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现. Future接口是Java标准API的一部分,在java.uti ...

  7. C# 方法执行超时处理

    封装了一个方法,用于处理一些需要判断是否执行超时了的操作 internal static T TimeoutCheck<T>(int ms, Func<T> func) { v ...

  8. DbCommand :执行超时已过期。完成操作之前已超时或服务器未响应。

    问题:“Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.”的解决方法 在一个链接数据库的时候,老是出现超时的错误:执行超时已过期.完成操作之前已超时或服务器未响应. 就是给这个链接 ...

  9. 【故障公告】再次遭遇SQL语句执行超时引发网站首页访问故障

    非常抱歉,昨天 18:40~19:10 再次遭遇上次遇到的 SQL 语句执行超时引发的网站首页访问故障,由此您带来麻烦,请您谅解. 上次故障详见故障公告,上次排查下来以为是 SQL Server 参数 ...

随机推荐

  1. 360度角转AS3角度

    var ang:Number=400; ang=ang%360; //as3角指0~180,0~-180的角 //1. 360度角转as3角 if(ang>180)ang-=360; else ...

  2. JS跨域访问问题

    js跨域了. 只能给几个资料参考了:http://blog.csdn.net/lovingprince/article/details/2954675 http://www.kuqin.com/web ...

  3. hadoop报错 Message missing required fields: callId, status

    今天群里有人问hadoop的问题,说百度上怎么都查不到,还好hadoop之前玩过一阵,也遇上过这个问题 hadoop-2.2.0  hbase 0.95-hadoop2的 ,hdfs正常 ,启动 hb ...

  4. Xcode-之Alcatraz

    一.说明: Alcatraz 是一款 Xcode的插件管理工具,可以用来管理XCode的 插件.模版以及颜色配置的工具. 二.安装 1.github地址:https://github.com/alca ...

  5. mvn 如何添加本地jar包 IDEA pom.xm

    -------------背景介绍------------------------------------ 最近做的项目,就是office在线浏览功能, 使用的是openoffice+jodconve ...

  6. 2016年团体程序设计天梯赛-决赛 L1-1. 正整数A+B(15)

    本题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000].稍微有点麻烦的是,输入并不保证是两个正整数. 输入格式: 输入在一行给出A和B,其间以空格分开.问题是A和B不一定是满 ...

  7. PAT 团体程序设计天梯赛-练习集 L1-003. 个位数统计

    给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0<=di<=9, i=0,...,k-1, dk-1>0),请编写程序统计每种不同的个位数字 ...

  8. bootstrap复习:组件

    一.下拉菜单 1.实例:将下拉菜单触发器和下拉菜单都包裹在 .dropdown 里,或者另一个声明了 position: relative; 的元素.然后加入组成菜单的 HTML 代码.为下拉菜单的父 ...

  9. javascript的insertBefore、insertAfter和appendChild简单介绍

      target.insertBefore(newChild,existingChild)参数说明:1.target:被添加节点和现有节点的父节点.2.newChild:将要被插入的节点.3.exis ...

  10. 向openwrt 源码添加ap143支持

    借鉴地址:http://www.pppei.net/blog/post/536 1.向文件 \target\linux\ar71xx\generic\profiles\atheros.mk 中添加ap ...