gpt4 book ai didi

php - 关闭浏览器可以终止服务器上的 PHP 脚本吗?

转载 作者:IT王子 更新时间:2023-10-29 00:07:46 27 4
gpt4 key购买 nike

假设用户点击了一个按钮,导致一个 jquery ajax 请求被发送到我的服务器。

服务器响应 ajax 请求开始一个复杂的过程。假设这个过程需要 5 分钟才能完成。

与此同时,用户感到无聊并关闭了他的浏览器窗口。

服务器上的脚本会继续处理直到它在正常时间完成,还是会停止?

如果用户访问一个 url,例如 example.com/process.php?data=xxx,也是如此。这将启动 process.php,它开始处理数据,需要 5 分钟才能完成处理。

这个处理会一直继续吗,或者如果用户关闭浏览器,它会停止吗?

(我之所以这么问,是因为我担心这个过程会半途而废并导致数据损坏)。

最佳答案

PHP 不会注意到浏览器关闭了连接,除非它试图输出一些东西(例如 echo)。如果输出失败,脚本将被终止,除非 ignore_user_abort开启。

所以脚本只有在满足以下条件时才会终止:

  • 脚本尝试输出一些东西(因为脚本直到那时才会注意到用户中止了连接)
  • 和 php 的 ignore_user_abort setting is off (如果设置关闭,php会在输出失败时终止脚本)

您可以通过启用 ignore_user_abort 来避免脚本终止.

您可以使用 connection_aborted()随时检查浏览器是否中止了请求。

脚本可能由于其他原因意外终止(例如最长执行时间、异常等);因此您应该使用事务,以便在脚本异常终止时取消半完成的更改。

关于php - 关闭浏览器可以终止服务器上的 PHP 脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11360274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com