PHP 设置代码的最长执行时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 设置代码的最长执行时间相关的知识,希望对你有一定的参考价值。
在php 程序的开始,我已经设置了 set_time_limit(0); 无执行时间限制的模式,现在在招待PHP 的时间,在很长时间以后,5,6个小时以后,页面就会报无法显示网页,但感觉呢这个PHP 好像还是在执行的。有没有办法报这个无法显示网页的错误提示去掉。
php完成某些操作的时候,可能需要较长的执行时间。这就需要设置他的执行时间,否则服务器会在执行时间超时后,停止执行,页面出现空白的情况。下面推荐两种解决方案:
php文件页面设置:
<?php//修改最大执行时间
ini_set(\'max_execution_time\', \'0\');
//修改此次最大运行内存
ini_set(\'memory_limit\',\'128M\');
/***
*
* 代码块省略......
*
*
*/
?>
php.ini配置文件设置(具体值,根据需要设置):
max_execution_time = 60
memory_limit = 128M
注意:如果执行内存完全满足的话,就不需要设置了。具体设置,根据情况灵活设置。
客户端浏览器把地址和数据发送给WEB服务器之后,WEB服务程序启动PHP,并等待执行完毕后把结果发送给浏览器,如果很久都执行不完,超过浏览器的耐心时就会出现无法显示网页。 参考技术B 这样的程序就不适合产生响应发送给浏览器,而应该在后台执行。
也就是写一个 Batch,然后在产生相应的 php 中用 system 或 exec 调用。注意命令后面加个 & 。比如:
system('/usr/bin/php /path/to/batchname.php &');
如果一个程序独占执行这么长时间,会严重影响 Web 服务器,弄不好其他的请求也会处于等待状态。本回答被提问者采纳 参考技术C 你让php执行这么长时间,php本身是不擅长的。甚至导致服务端资源严重浪费。我记得以前asp跑几天都没问题,不过也是那个错误。
执行这么长时间,缓存里面有多少数据?你注意释放缓存。不要输出数据就行了。
什么是最大值php artisan命令的执行时间
我只是想知道,laravel工匠命令的最长执行时间是多少?
它是无限的像PHP shell脚本还是artisan / laravel对无限循环命令有某种保护?
因为我想制作一个永远运行的命令,只要服务器正在运行。 Laravel Artisan可以吗?
谢谢
我只是想知道,laravel工匠命令的最长执行时间是多少?
如果通过命令行运行它 - 它可以是无限期的。
它是无限的像PHP shell脚本或剂量artisan / laravel对无限循环命令有某种保护?
没有保护 - 你可以自由地做你想做的事。
因为我想制作一个永远运行的命令,只要服务器正在运行。 Laravel Artisan可以吗?
我做了类似的事情 - 我有一个php artisan命令,目前已经运行了89天没有问题到目前为止。但正如下面提到的Aross,问题是如果命令由于某种原因确实失败了,你需要知道它。
默认值为零,表示没有时间限制。尽管默认情况下最大执行时间为30,但这不会影响命令行进程。
从这里查看文档: - http://php.net/manual/en/info.configuration.php#ini.max-execution-time
希望这会有所帮助,干杯!
从shell(或cron)运行php artisan
使用PHP的标准CLI配置。所以是的,以这种方式运行的脚本不会受时间限制(默认情况下)。但是,由于PHP的设计和有限的内存效率,使用supervisor和memmon设置脚本是个好主意。
以下是来自here的Supervisor配置示例:
[supervisord]
logfile = /tmp/supervisord.log
#loglevel = debug
# Try keeping your-app running at all times.
[program:your-app]
command=/your/app
autostart=true
autorestart=true
startsecs=5
startretries=3
stopsignal=TERM
stopwaitsecs=10
log_stdout=true
log_stderr=true
logfile=/tmp/your-app.log
logfile_maxbytes=10MB
logfile_backups=10
# Restart your-app when it's using more than 50MB of memory
[eventlistener:memmon]
command=memmon -p your-app=50MB
# Check every 60 seconds
events=TICK_60
# The eventlistener plugin depends on [rpcinterface:supervisor] and a server
# [inet_http_server] or [unix_http_server] to communicate to the supervisor.
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisord]
logfile = /tmp/supervisord.log
#loglevel = debug
[inet_http_server]
port = 9001
您可以独立于任何默认配置时间限制运行php应用程序:
php -d max_execution_time=0 script.php
附: Set max_execution_time in PHP CLI
以上是关于PHP 设置代码的最长执行时间的主要内容,如果未能解决你的问题,请参考以下文章