2014-04-27 138 views
0

我有一个约500行的表,它将在未来扩展。在后台执行PHP脚本

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从浏览器窗口上的用户称为!

我总是得到错误,但我不知道在哪里,什么错误(可能是错误的),我有!

我不知道如何前进......

编辑 本网站上没有人能够正确地回答我的问题? =(

+0

什么是错误? –

+0

如果exec函数失败(SE在我的问题'或回声“Error'' – Perocat

+0

使用'passthru'第一没有它打印的'&',以确保脚本工作 –

回答

0

这和其他类似的任务,你可以使用cron job,它是类Unix操作系统,基于时间的工作sheduler。虚拟主机公司通常为他们的客户提供这项服务。

你只需要编写PHP脚本,设置执行时间,然后在指定的时间在后台运行

+0

应该对用户操作不经常 – Perocat

+0

@Perocat在执行这种情况下看看这个[stackoverflow的答案](http://stackoverflow.com/questions/1532065/php-multithread)。 –

0

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