php.ini中max_execution_time的最大允许值是多少

时间:2015-09-11 14:15:11

标签: php

我尝试使用

增加php中max_execution_time的值
ini_set('max_execution_time', 108000);

等于30小时。我正在玩这个值来抓取包含大量数据的网站。但是,我这个致命的错误说,最大执行时间不能超过30秒。当我将108000值更改为300时,我的脚本执行了5分钟。我想知道这个东西在php中允许的最大值是多少?

2 个答案:

答案 0 :(得分:4)

关于Mjh评论的正确答案。

用于解析整数ini值的签名:

ZEND_API long zend_ini_long(char *name, uint name_length, int orig);

因此,可以输入该字段的最大值为:2147483647

旧答案。

我能找到的唯一线索是: https://github.com/php/php-src/blob/master/main/php_ini.h

#define php_ini_long    zend_ini_long

最终导致: https://github.com/php/php-src/blob/master/Zend/zend_long.h

typedef int64_t zend_long;

这是64位整数,或者:

−9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

编辑:更正。

// PHP x64
typedef int64_t zend_long;

// PHP x86
typedef int32_t zend_long;

因此最大值为PHP_INT_MAX

如果您收到错误消息称它不能超过30秒,这是因为您的服务器配置已禁止将该值更改为超过30秒的任何值。

答案 1 :(得分:1)

引用手册set_time_limit

  

最长执行时间,以秒为单位。如果设置为零,则不会施加时间限制。

它可能是无限的,所以也许对于php,限制只是最大 int 值。

但是可能存在外部因素,如果我没记错的话 suhosin 补丁有自己的最大执行时间如果从Web服务器执行也许服务器本身有一些限制,看php sources我的印象也是网络超时可能是一个因素。