Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本忽略最大执行时间,并在第600秒停止_Php_Shared Hosting_Time Limiting - Fatal编程技术网

PHP脚本忽略最大执行时间,并在第600秒停止

PHP脚本忽略最大执行时间,并在第600秒停止,php,shared-hosting,time-limiting,Php,Shared Hosting,Time Limiting,脚本在共享主机上运行,并遵循根php.ini文件。它使用PHP5.4,因此没有安全模式,也没有使用.htaccess文件。 我问支持人员他们是否有任何限制,她说他们的超时时间是两个小时。 在localhost上,它不会停止,但会忽略我的限制 该示例在601-606秒(约10分钟)后停止,而不是1000秒: // For immidiately printing in browser header('Content-Type:text/html; charset=UTF-8'); $limit

脚本在共享主机上运行,并遵循根php.ini文件。它使用PHP5.4,因此没有安全模式,也没有使用.htaccess文件。 我问支持人员他们是否有任何限制,她说他们的超时时间是两个小时。 在localhost上,它不会停止,但会忽略我的限制

该示例在601-606秒(约10分钟)后停止,而不是1000秒:

// For immidiately printing in browser
header('Content-Type:text/html; charset=UTF-8');

$limit = 1000;

set_time_limit($limit);
ini_set('max_execution_time', $limit);
ini_set('max_input_time', $limit);
ini_set('memory_limit', $limit . 'M');
ini_set('max_input_time', $limit);
ini_set('post_max_size', $limit);
ini_set('file_uploads', $limit);
ini_set('upload_max_filesize', $limit);

$start = microtime(1);

// Every second prints elapsed seconds
for ($i=0; $i<1000; $i++){
    echo str_pad(round(microtime(1)-$start), 4096);
    flush();
    sleep(1);
}
//用于在浏览器中即时打印
标题('Content-Type:text/html;charset=UTF-8');
$limit=1000;
设置时间限制($limit);
ini_集合('最大执行时间',$limit);
ini_集合('最大输入时间',$限制);
ini_set('memory_limit',$limit.M');
ini_集合('最大输入时间',$限制);
ini_集('post_max_size',$limit);
ini_集('file_uploads',$limit);
ini_集('upload_max_filesize',$limit);
$start=microtime(1);
//每秒打印经过的秒数

对于($i=0;$i而言,当存在CGI超时值时,通常会发生此类超时,这不是源于php的问题

试试这个:

set_time_limit(0);  // run foorreeveeerr
for ($i=0; $i<1000; $i++){
    echo str_pad(round(microtime(1)-$start), 4096);
    flush();
    sleep(1);
    set_time_limit(0); // if PHP_CLI SAPI and having error messages
}

特别是后者在设置之前和之后

 ini_set('max_execution_time');

验证设置是否至少成功。

首先关于超时:

不要计算sleep()、system()、file_get_contents()和DB调用。这就是为什么我认为脚本忽略了我的限制

我再次与支持人员交谈,结果发现停止脚本的不是Apache超时,而是“某物”,它监视脚本并在10分钟后停止共享IP客户的脚本。我向他询问了完整的限制列表:

Type | Dedicated | Shared -----------+-----------+----------- Apache/Web | 12 hours | 10 minutes SSH/Shell | 2 hours | 1 hour Cron Jobs | 1 hour | 30 minutes Daemons | Unlimited | 10 minutes 类型|专用|共享 -----------+-----------+----------- Apache/Web | 12小时| 10分钟 SSH/Shell | 2小时| 1小时 Cron Jobs | 1小时| 30分钟 守护进程|无限| 10分钟
这就是为什么它在cron上运行得很好。

您是通过浏览器运行的吗?如果是这样,web服务器可能也有超时是的,通过浏览器。我现在使用cron运行它,它工作了!浏览器中有超时吗?不知道浏览器是什么;但是web服务器通常有超时。有没有办法调整共享上的web服务器超时d托管?这一切都取决于您的主机;但是如果运行需要那么长时间,您不应该让浏览器用户等待那么长时间……他们只会感到无聊,并且中止没有帮助。它在Apache上运行,但由于这是共享托管,我无法访问httpd.conf。我可以在.htaccess中更改它吗?是否可以检查limi是什么ts在httpd.conf中与php一起使用?为了确保支持人员知道他们在谈论什么…编辑了答案…现在这是我关于这个主题的全部知识,我希望您能很快找到解决方案,祝您好运。在PHP5.4中,安全模式已被删除,因此ini_get('safe_mode'))不返回任何内容。max_execution_time运行正常。好吧,我会继续思考我能做什么。非常感谢您的帮助!
 ini_set('max_execution_time');
Type | Dedicated | Shared -----------+-----------+----------- Apache/Web | 12 hours | 10 minutes SSH/Shell | 2 hours | 1 hour Cron Jobs | 1 hour | 30 minutes Daemons | Unlimited | 10 minutes