我的网站有报告下载功能。完成下载需要将近 15 分钟以上的时间。虽然此功能运行我的网站,但不允许打开我网站中的其他页面或其他活动。我也不想使用 cron 作业,因为它不是常规任务。
为了克服这个问题,我编写了 shell_exec 来调用用户按钮点击并在完成后发送一封带有附件的电子邮件。它工作正常但它也不允许用户打开主页也仍然在后端完成。请建议任何人如何实现这一目标。
我的主要动作是用户一旦点击下载按钮,我必须在后端调用一个函数,用户必须做其他活动,比如打开主页或搜索其他任何东西。
public function downloadtest_new() {
$data = $_POST;
$post_data = http_build_query($data);
$url = base_url()."home/downloadreport_new";
$command = "curl -X POST -d '$post_data' '$url'";
$output = shell_exec($command);
echo "<script>window.close();</script>";
}
在 downloadreport_new 中有一个从 sql 中检索数据并将其作为 csv 发送到用户电子邮件的逻辑。功能运行良好,但用户在完成时无法执行任何其他任务。