2011-08-18 53 views
0

我必须在PHP上每周运行一次相当繁重的任务(脚本卷曲到各个位置(网站,API),收集,排序数据并将其插入到数据库中)。整个脚本需要大约10到15分钟才能在我的mac(localhost)上运行 - 猜测它会在服务器上运行得更快。尽管如此,我目前正在使用AJAX进行循环,因此当每个任务完成时,下一个任务将启动。现在我需要每周自动运行它。所以我认为我不能用AJAX做到这一点。重CRON任务

我必须设置php.ini才能让脚本运行30分钟或者有更好的方法来执行它吗?

回答

1

PHP脚本的maximum execution time由其中已产生输出的时间量来确定。因此,将数据写入STDOUT(例如写入日志文件)将使脚本继续运行。但是,如果您从命令行运行脚本,则无论如何max-execution-time默认为零,并且如前所述,我会使用cronjob而不是AJAX-Request来启动脚本,或者类似的方法。实际上,我为大多数执行管理任务的php脚本执行此操作,例如跨多个数据库或类似目的同步数据。

+0

好吧,所以不管PHP文件执行需要多长时间,通过cron运行它都不会遇到任何错误。正确吗? – Norris

+0

正确 - 如果您的软件包维护人员没有通过设置限制(最大执行时间> 0)没有进行限制,您仍然应该检查php.ini文件。另外,请记住,在linux系统上,不同的php.ini文件适用于不同的环境,例如apache2与CLI(命令行界面)不同。还有一件事:对于日志文件,我特指将它写入像'php myscript.php>/var/log/myscript.log'这样的管道。 – Lars

1

php.ini与调度作业无关。它只是定义PHP的启动设置。正如你的标题所说,你想要的是一个cron工作。

对于OSX的cron设置,见http://hintsforums.macworld.com/showthread.php?s=&threadid=39005

+0

是的,但我可能会得到一个PHP运行时错误,因为它需要这么长时间,或者我错了吗? – Norris

+0

您不应该使用类似于来自twitter的流数据。它运行几个小时,我不记得需要更改任何设置。 – Caimen

+3

命令行PHP通常默认为没有时间限制,并且这是cron作业运行的环境。 –