浏览器关闭和服务器问题

时间:2010-02-06 01:38:29

标签: php browser

服务器如何知道我在这样的代码中关闭了浏览器?

<?php
$i = 0;
while (1) {
    echo "a";
    flush();
    $fp = fopen("$i.txt", "w");
    fclose($fp);
    sleep(1);
    $i++;
}
?>

如果我关闭浏览器,脚本将停止,不再创建文件。

1 个答案:

答案 0 :(得分:2)

这是因为当您尝试输出某些内容(例如echo "a"; flush();")时,PHP会看到请求已中止,因此会停止请求。

快速说明一下。只有在输出某些内容时才会发生这种情况。我猜这是因为PHP主要用于模板,主要用于输出内容。那么,如果内容不会去任何地方,为什么要继续处理脚本?

如果你不想让它停止。执行以下操作之一:

选项A:不输出任何内容。

flush()echo都被视为输出,以及许多其他功能。 PHP仅检查用户在发送内容时是否已中止,因此不输出任何内容将确保不检查。虽然这可能不像......那样可靠。

选项B:使用ignore_user_abort(true)

这将确保即使用户离开页面,脚本也会继续输出。然后,您可以使用connection_aborted()进行检查,以确定连接是否已中止。

您可以在PHP's Connection Handling Documentation.

上阅读所有相关内容
相关问题