你能告诉 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 服务器中止以前运行的脚本的执行吗?的主要内容,如果未能解决你的问题,请参考以下文章