Web请求后运行后台进程

Edu*_*rdo 5 php ajax cron jobs multithreading

我有兴趣在Web请求之后启动进程,或者可能在初始线程完成后分支新进程.

我宁愿不使用cron,因为我将要运行的作业的性质以及它们需要运行的频率,等待一分钟刷新不是一种选择.

我正在考虑这样做的几种方法:

1)中调用JavaScript的网页揭开序幕的过程,并立即返回,然后之后运行任务,例如AJAX("/ run_jobs.php?工作= 123")......你的想法

2)线程完成后分叉新线程; 即output_page(); 新线程(); run_job(123); 出口();

任何人对此主题有任何想法或有这方面的经验.

joh*_*nes 6

那么这取决于你想要的工作.一种更复杂但更具可扩展性和可控性的方法是使用Gearman来启动和控制作业.好处是你可以将作业分发到其他盒子,这样你的web服务器就不会满负荷.

简单的方法是使用exec和nohup类似的

<?php
exec("nohup /usr/bin/php script.php >/dev/null 2>/dev/null &");
?>
Run Code Online (Sandbox Code Playgroud)

重要的部分是从PHP进程中分离输出通道.要读取进程的结果,可以将其存储在数据库中.