在后台执行PHP脚本

时间:2014-04-27 14:33:40

标签: php background exec command-line-interface

我有一个约500行的表,将来会扩展。

background.php中,我创建了一些PDF并将电子邮件和传真发送到此表的每条记录:这需要一定的时间,这意味着我无法在浏览器窗口或AJAX上执行操作调用

现在我想创建一个后台进程(exec()或shell_exec()或proc_open()或...?),它们遍历表格并发送传真和邮件。

我不需要日志,因为脚本有一个内部日志系统。

我尝试过像

这样的事情
<form method="post" action="">
  <input type="submit" name="background" value="go">
</form>

if(isset($_POST['background'])){
    exec('php /WEB/mysite/.../.../htdocs/test/background.php &') or echo 'Error';
}

在浏览器窗口中从用户调用background.php

我总是收到错误,但我不知道我有哪些错误(可能是错误)!

我不知道如何前进...

EDIT 这个网站上没有人能够正确回答我的问题? =(

2 个答案:

答案 0 :(得分:0)

对于此和其他类似任务,您可以使用cron job。它是类Unix操作系统中基于时间的工作者。网站托管公司通常会为其客户提供此服务。

您只需要编写PHP脚本,设置应该执行的时间,之后它将在后台的指定时间运行。

答案 1 :(得分:0)

也许你应该在长操作之前调用函数write_session_close()。这将使服务器能够独立于响应先前的请求而响应ajax调用。这不会删除会话,但不会再次写入会话。但您始终可以使用session_destroy()和session_start()来重置会话。