用于长时间运行任务的PHP CLI或PHP over Apache


PHP CLI or PHP over Apache for long running tasks

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

我知道PHP- cli每次运行脚本时都需要加载PHP解释器和它的所有模块;而在PHP/Apache中,它们是先前加载的,所以从技术上讲,PHP/Apache应该更快一点,消耗更少的内存(根据so中的其他帖子)

我应该运行这些脚本通过PHP CLI或通过一个专门的Apache安装在系统中只是为了后台处理?所以技术上

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

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

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

我使用PHP,运行基于cli的脚本,每天通过各种队列运行超过一百万个项目(偶尔会执行这个数量的几倍)。也有一些旧的系统通过web服务器,这样做的额外开销可能会极大地限制当你试图做大量的任务。

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

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

编辑:还请注意,您不希望任何人都能够启动该过程,所以如果您运行Apache,现在您必须添加一个安全层。