【问题标题】:Will closing the browser prevent a PHP script from finishing execution?关闭浏览器会阻止 PHP 脚本完成执行吗?
【发布时间】:2014-10-30 05:38:03
【问题描述】:

如果向服务器发出 ajax 请求以在后端运行脚本并且用户关闭了浏览器。如果该脚本启动并处于中间进程中,它会在后端完成执行吗?

【问题讨论】:

    标签: php html apache


    【解决方案1】:

    NO..,PHP 脚本不会终止执行。

    YES..它会完成它的执行。

    一旦启动 php 脚本,它将完成执行然后停止。

    因为 php 运行在服务器端,它不会被客户端简单的事件如browser window close 中断。

    但是客户端将无法看到输出。

    例如:

    试试这个代码:

    //File Name: xyz.php
    <?php
    $fp=fopen("output.txt","w");
    $count=0;
    for($count=0;1;$count++){
      //Infinite loop
      fwrite($fp,"".PHP_EOL."".$count."");
      sleep(1);
      if ($count>=60) break;
    }
    fclose($fp);
    ?>
    

    现在测试这个文件,即使在您关闭浏览器窗口后,它仍会继续在该输出文件中打印 (output.txt)。

    【讨论】:

    • 实际上是的,他问脚本是否会完成它的执行:D
    • ignore_user_abort 选项怎么样?我认为在大多数 PHP 安装中它默认设置为 false。浏览器是否不会在浏览器/标签关闭时发送中止?如果用户点击停止按钮会怎样?
    • @RaisinBranCrunch,你为什么不试试,让我知道?实际上,过去 4 年我没有在 php 工作。所以不知道这些新功能。但是,如果您可以尝试让我知道这将非常有帮助。
    • @VedantTerkar 经过 Chrome 和 Firefox 测试,即使将 ignore_user_abort 选项设置为 false,停止按钮也不会触发中止。很有趣。
    • @RaisinBranCrunch,我相信只有在终端运行 php 脚本时,该选项才会被磨练;在这种情况下,如果您关闭终端,脚本将停止执行。至少这是我从文档中可以理解的。所以对于浏览器,该选项不应该影响。
    【解决方案2】:

    嗯,PHP 是服务器端,它计算所有代码,然后将结果发送到客户端。所以我猜即使你关闭浏览器它也会完成脚本执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多