为了账号安全,请及时绑定邮箱和手机立即绑定

在执行脚本之前尝试重定向用户不起作用

在执行脚本之前尝试重定向用户不起作用

PHP
白衣非少年 2021-08-21 10:36:54
在用户提交表单后,我有一个长时间运行的脚本,我试图在实际脚本开始执行之前重定向它们但我认为该解决方案已过时,因为它什么也没做这是提交表单后脚本顶部的代码set_time_limit(0);header ( 'Connection: close' );ob_start ();header ( 'Content-Length: 0' );header("Location: www.google.com");ob_end_flush ();flush ();ignore_user_abort(true);预期结果:我的预期结果是让用户点击提交按钮,他们被重定向到 google.com 同时脚本将继续在我的服务器上执行实际结果:实际发生的是用户只是坐在页面上直到脚本完成执行
查看完整描述

3 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

最简单的方法是 ajax 调用,但正如您所提到的那样,这是行不通的。我建议你排队。您可以在数据库中创建一个表,并在用户提交表单时向该表添加一个条目。并根据需要重定向用户。这不会花很长时间。

现在按照您的意愿创建一个 cron 作业,从该表中读取并使用表中的数据执行所需的脚本。脚本完成后从表中删除条目。

您可以从此处获得有关队列以及如何创建它们的更多详细信息


查看完整回答
反对 回复 2021-08-21
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

最安全的方法是使用脚本中的 PHP exec启动外部应用程序(可能是另一个借助 php 可执行文件的 php脚本)。您可以exec($cmd . " > /dev/null &");用于后台执行。

发送重定向后,连接可能会关闭。Web 服务器可能会终止您正在执行的 PHP 脚本,例如 nginx 不支持“后台”命令。


查看完整回答
反对 回复 2021-08-21
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号