【发布时间】:2021-01-26 15:11:52
【问题描述】:
即使 Ajax 会话从用户端关闭,我也想完成 PHP 请求。我设法通过将ignore_user_abort(True) 添加到我的 php 文件中来在 Apache 上执行此操作,但它不适用于带有 FASTCGI 的 IIS 10。试图在没有运气的情况下搜索任何解决方案。我在 windows server 2019 上使用 PHP v7.4 和 IIS v10。
以下只是打开文件并打印连接状态的测试代码。它在 Apache 上运行完美,但在 IIS 上,它停止写入 ponce 会话关闭。
<?php
ignore_user_abort ( TRUE );
echo "hello\n";
$x=0;
$log_filename = ".\\test.txt";
while (@ ob_end_flush());
while ($x<100)
{
echo($x ."\n");
$status = connection_aborted();
file_put_contents($log_filename, $x ." - " .$status ."\n", FILE_APPEND);
$x++;
@ flush();
sleep(1);
}
?>
【问题讨论】:
-
这似乎是一个老错误(自 2011 年以来):bugs.php.net/bug.php?id=60586#1378935714。但它仍被标记为打开。
-
@Magnus 我看到了那个错误,但那是针对 V5.3,我正在使用 V7.4
-
是的,但问题仍然可能相同。同一问题的最后一条评论来自 2017 年。
标签: php ajax apache iis fastcgi