我想找到一种让用户无需等待php脚本输出并在服务器上运行脚本时重定向到页面的方法。
基本上用户提交了一个需要很长时间才能处理的表单,我想将用户重定向到一个页面,通知他表单正在处理中,并且输出将在以后可用(我想在打开选项卡时输出就绪了。)
基本上我想要这样的东西,我试过没有成功,
if ($form_valid) {
process_form(); // this would need not to be running on the current page so that the user don't have to wait for it to be ready (timeout problems)
header('Location: http://example.com/form_submitted_output_coming_soon.html');
}
我希望它不会太模糊。
提前感谢您提供有关我如何做到这一点的任何帮助/建议。
答案 0 :(得分:1)
解决此类问题的最佳方法是使用AJAX在后台向服务器发出请求,然后在完成处理后更新用户。
答案 1 :(得分:1)
您可以使用异步请求(ajax)提交表单,并使用javascript处理页面转发。这样您的表单就会异步处理 - 一旦得到答案,您甚至可以等待响应告诉用户。此异步请求不会阻止UI。
只是为了完整性,如果你真的真的只想用这个: Run PHP Task Asynchronously
答案 2 :(得分:1)
这实际上取决于脚本执行的时间,如果是秒,10以下我会做一个ajax请求并有一个模态进度消息
如果他们花费更长的时间,我的方法是创建或使用现有的任务调度程序/报告生成器
Example on how to fork php to background
<强>更新强>
我认为你会从机器人中获得更好的性能,不断检查数据库或文件以进行工作并将结果提交回数据库。在完成/更新所需工作时,通过ajax,Web套接字和/或电子邮件向用户发出警报。
的精彩介绍