如何让Cronjob执行PHP脚本运行超过30秒?

时间:2009-11-07 17:49:28

标签: php cron shared-hosting

如何将其重写为每天运行时间超过30秒的cron?另外,我是否需要编辑.htaccess目录中的php.inicron.php文件来说明什么?在浏览器上运行时间超过30秒;在shell上,它也运行得很好。但作为一个cron设置任务,它在30秒后死亡。我在1and1分享托管。

0 12 * * * php5 /this/is/the/file/cron.php

6 个答案:

答案 0 :(得分:4)

有几件事可能会终止你的脚本。一个可能是php.ini文件中设置的最长执行时间。如果是这种情况,您可以在脚本中使用set_time_limit(0);覆盖它,其中零表示没有限制,任何大于零的数字是允许脚本在终止之前运行的秒数。重要的是要注意,这个时间不包括浏览器发出请求所需的时间,因此文件上传时间不计算在这里。

如果您处于共享托管环境(如Dreamhost)中,那么它们会有一个进程监视,它会在设置的时间限制后终止任何PHP进程。你无法解决这些问题。您需要联系托管服务提供商,了解您需要做什么才能获得更长时间运行脚本的访问权限(对于Dreamhost,他们希望您拥有他们的PS产品)。

答案 1 :(得分:3)

使用此语法启动php:

php -c /path/to/another/php.ini /this/is/the/file/cron.php

然后,您可以在不同的php.ini文件中指定不同的超时(或无超时)。

答案 2 :(得分:3)

ini_set('max_execution_time', 600);

将它添加到php文件的顶部,它将运行600秒。如果你想要的话,不建议你做任何事情。

答案 3 :(得分:2)

如果使用PHP CLI,则无需设置更高的max_execution_time:

“ max_execution_time”的CLI SAPI默认值设置为无限制。

http://nl3.php.net/manual/en/features.commandline.differences.php

答案 4 :(得分:1)

我只会使用wget http://path.to.myscript.php

如果它在30之后死亡,您可能需要在max_execution_time = 60中设置php.ini以允许脚本运行超过30秒。

答案 5 :(得分:0)

您也可以使用ini_set('max_execution_time', 60)

但正如手册页所说,在某些情况下(即在安全模式下运行),这根本不起作用:http://uk.php.net/manual/en/info.configuration.php#ini.max-execution-time

客户端行的php.ini也可能具有与浏览器不同的最大执行值。我有时见过它。