运行很长时间执行PHP脚本甚至浏览器关闭

时间:2011-08-31 06:21:33

标签: php linux cron background-process

我正在使用symfony框架处理Web Payroll项目。我们每月有27000名员工来处理。当我们进行员工工资核算流程时,我们不能依赖浏览器请求,因为很长一段时间需要处理流程和服务器时间。作为一个解决方案,我们喜欢从linux服务器上的后台执行php脚本。然后即使浏览器关闭脚本也可以执行后台。

执行此任务的最佳方法是帮助

更多信息

我们希望在用户点击按钮付费滚动流程时应该从网络界面给出工资滚动流程开始按钮,即使浏览器关闭它也应该执行直到从后台完成。

问候

2 个答案:

答案 0 :(得分:2)

要在背景中运行,请执行以下步骤:

  1. 将您的php命令包装在shell脚本中:
  2. **

    #!/usr/bin/bash
    # set up environment variables, PATH etc. here
    php  /home/yourapp/yourscript.php
    

    **

    1. 编写网页/ php脚本以请求开始。

    2. 在脚本中,您需要以下行:

      system('/ home / yourapp / yourscript.sh> scriptlog.txt&'

    3. 您可能需要一个额外的链接来浏览网络上的“scriptlog.txt”文件。

答案 1 :(得分:1)

有不同的方法可以解决这个问题。

第一种方法是从PHP代码开始在后台执行startinan shell命令(如果你愿意,可以使用nohup)。这就像重复问题中的第一个答案一样。

第二种方法是使用PHP PCNTL功能。 使用PCNTL,您可以创建在后台运行的子进程。因此可以制作fork并返回给用户:“付费滚动流程正在运行 - 如果系统准备就绪,您将收到邮件”。