2011-08-05 66 views
0

我需要运行一系列的PHP脚本和程序的任务是在队列中。从PHP Cli或PHP/Apache运行时,任务可能需要10分钟或更长时间。可能有多个脚本实例。这需要重复发生。 PHP/Apache将没有用户交互,它们将与后端/ usr/bin/curl程序交互。PHP CLI或PHP在Apache的长时间运行的任务

我知道PHP-CLI将需要加载的PHP解释器和它所有的每一个脚本运行时模块;而在PHP/Apache中,它们是先前加载的,因此技术上PHP/Apache应该更快一些并消耗更少的内存(如同SO中的其他帖子)

我应该通过PHP CLI还是通过专用Apache安装在系统中仅用于后台处理?因此从技术上讲

# php processtask.php --taskId=1 & 
# php processtask.php --taskId=2 & 

VS

# /usr/bin/curl http://localhost/processtask.php?taskId=1 & 
# /usr/bin/curl http://localhost/processtask.php?taskId=2 & 

如果加载卷曲每次可能会导致更多的资源使用情况的话,我可以用另一个守护进程的脚本,循环和使用curl库做在不同的线程在同一(这大概不会PHP)

回答

1

我认为这是愚蠢的安装,配置和维护的Apache没有其他原因,而不是脱机运行PHP脚本。想想所有的额外要求和可能出错的部分。保持简单并直接使用CLI。

编辑:还要注意的是,你不想只是任何人能断火的过程中,因此,如果您通过Apache运行,现在你必须添加一个安全层。

2

我使用的是PHP,运行基于CLI的脚本超过每天一万件商品通过各种队列运行(偶尔这样做量的一些倍数)。还有一些较老的系统通过网络服务器进行访问,当您尝试执行大量任务时,额外的开销会极大地受到限制。

基于Web的工作也必须有额外的工作投入他们避免超时。从命令行运行,或通过shell脚本和/或CRON启动将是最好的方式。

+0

在CLI上运行速度更快吗?有没有办法配置它作为服务运行? –