如何在后台PHP中执行很长的任务?

时间:2017-02-07 23:39:55

标签: php nginx

好的,我们说我的网站允许用户上传大批文件进行处理。

现在,一旦他们上传文件,就会调用process_files()函数。这将需要很长时间才能完成,它将基本上使用户无法使用该网站,直到任务超时或完成。

我想知道的是,如果在并行或后台执行此操作很容易,那么用户仍然可以使用该网站吗?

如果它在我的情况下有所不同,那么很少会被调用。

2 个答案:

答案 0 :(得分:4)

您可以将任务分为两部分:

第一部分(web)仅将文件保存在磁盘上。通过这种方式,Web部件可以快速工作。

秒(系统)将处理第一部分保存的所有文件。并且您可以定期启动它,即作为Linux上的cron任务,或根据您的系统使用其他任务调度程序。

答案 1 :(得分:0)

我建议在文件上传后,通过CLI调用脚本,该脚本将在后台运行并且不会阻塞:

exec("php the_long_file_processing_script.php > /dev/null &");