在后台执行PHP脚本

30 浏览
0 Comments

在后台执行PHP脚本

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

在background.php中,我创建一些PDF文件,并将它们通过电子邮件和传真发送给这个表格中的每一条记录:这需要一定的时间,这意味着我无法在浏览器窗口中执行操作或使用AJAX调用。

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

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

我尝试了类似下面的代码:

if(isset($_POST['background'])){

exec('php /WEB/mysite/.../.../htdocs/test/background.php &') or echo 'Error';

}

其中background.php是从用户在浏览器窗口中调用的!

我总是得到错误,但我不知道错误出在哪里和是什么错误(可能是多个错误)!

我不知道该如何继续下去...

编辑

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

0
0 Comments

在执行长时间操作之前,应该调用write_session_close()函数。这将使服务器能够独立于之前的请求获取响应并响应ajax调用。这不会删除会话,但不会再允许对其进行写操作。但是,您始终可以使用session_destroy()和session_start()来重置会话。

解决方法:

write_session_close();
// 执行长时间操作
// 重置会话
session_destroy();
session_start();

通过在执行长时间操作之前调用write_session_close()函数,可以使服务器能够独立于之前的请求处理其他请求,从而提高系统的并发性能。

0
0 Comments

问题:如何在后台执行PHP脚本?

原因:如果要在用户操作时执行脚本,而不是定期执行,那么不能使用cron job。在这种情况下,可以参考stackoverflow的答案。

解决方法:使用以下方法来实现在后台执行PHP脚本:

1. 使用cron job在Unix类操作系统中进行时间调度。这是一种基于时间的作业调度器,通常由网络托管公司为其客户提供此服务。只需编写PHP脚本,设置应该执行的时间,然后在指定时间后在后台运行。

2. 如果脚本需要在用户操作时执行,而不是定期执行,可以参考stackoverflow上的答案。

代码示例:

// PHP script to be executed in the background

参考stackoverflow上的答案,可以使用以下方法来在后台执行PHP脚本:

// PHP script to be executed on user action
 /dev/null 2>&1 &");
?>

以上是在后台执行PHP脚本的原因和解决方法。使用cron job可以在指定时间后自动执行脚本,而使用exec()函数可以在用户操作时在后台执行脚本。

0