你能告诉 php 服务器中止以前运行的脚本的执行吗?

Posted

技术标签:

【中文标题】你能告诉 php 服务器中止以前运行的脚本的执行吗?【英文标题】:Can you tell a php server to abort the execution of a previously running script? 【发布时间】:2011-12-16 19:47:48 【问题描述】:

我的网页使用ajax调用从一个很长的php脚本返回数据,所以如果我提前退出页面并重新加载页面,那个php脚本仍在执行,这会给我带来问题。

如果有一个仍在运行的 ajax 请求,我是否可以告诉服务器中止执行?

谢谢

【问题讨论】:

【参考方案1】:

不直接。您将需要设置一个方案,将工作卸载到外部(到 Web 服务器)进程,并且该进程具有与 Web 服务器设置的通信通道,使其能够检查它是否应该放弃它正在做的每一件事经常如此(例如,一个简单但不理想的方案是检查“锁定文件”的最后修改时间;如果过去超过 X 秒,则中止任务)。

然后,您的网页将调用一个脚本,该脚本将适当地“保持活动”后台任务(例如,通过触摸上一个示例的锁定文件)。

这样,当通过 AJAX 请求启动任务时,客户端开始向服务器发出“keep-alive”请求,服务器将“keep-alive”消息转发给外部进程。如果用户重新加载页面,“keep-alive”请求将停止,并且工作进程将在 keep-alive 阈值过去时中止。如果一切顺利并且工作完成,您的服务器将通过它与工作进程的通信通道检测到这一点,并在下一次保持活动“ping”时将其报告给客户端。

【讨论】:

【参考方案2】:

也许可以尝试对这个脚本使用set_time_limit() 函数。

或者创建一些php脚本,随机生成一个url。

【讨论】:

【参考方案3】:

您是否尝试在页面重新加载时将 XMLHttpRequest 对象设置为 null?

【讨论】:

以上是关于你能告诉 php 服务器中止以前运行的脚本的执行吗?的主要内容,如果未能解决你的问题,请参考以下文章

你能告诉我PHP中的这个谷歌驱动API调用函数有啥问题吗

你能“编译”PHP 代码并上传一个二进制文件,它只会由字节码解释器运行吗?

php 脚本 Bluehost Websocket 服务器

中止基于 php 警告/错误的构建

标头重定向后会执行 PHP 脚本吗?

检测用户中止/导航 websocket