php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #38532 connection status does not reflect the right information
Submitted: 2006-08-21 08:05 UTC Modified: 2006-08-21 09:58 UTC
From: fdcxl at 163 dot com Assigned:
Status: Not a bug Package: *Web Server problem
PHP Version: 5.1.5 OS: linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: fdcxl at 163 dot com
New email:
PHP Version: OS:

 

 [2006-08-21 08:05 UTC] fdcxl at 163 dot com
Description:
------------
connection_status function can't reflect the right information. When I click Stop button of IE, I can't get the ABORT signal.

Reproduce code:
---------------
conn.php
<?php
while(true)
{
sleep(1);
file_put_contents("/tmp/abc", "Connection:".connection_status()."\n", FILE_APPEND);
}
?>

I access this page using IE with http, after about 10 seconds, I click Stop button of IE.

Expected result:
----------------
The contents of /tmp/abc should be a sequence of 0s with one 1 in the end. The script stops.

Actual result:
--------------
I get all 0s, and script keeps running

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-08-21 08:46 UTC] tony2001@php.net
connection_status and connection_aborted() rely on the function that outputs the data from the buffer.
Since you do not output any data, there is no way to detect that the connection is dead.
 [2006-08-21 09:28 UTC] fdcxl at 163 dot com
In the manual, it says that when user clicks STOP button, the script should be terminated. In fact, the script keeps running. I checked it by verifying the size of /tmp/abc, which keeps increasing. 

I have tried to send output. It seems that IE maintains its own buffer, that any output can't get displayed before I click STOP button
 [2006-08-21 09:58 UTC] fdcxl at 163 dot com
I make another test. With the following script:
<?php
$str = "asdfasdf5687ju9465870u985tg79yh8";
$str1 = str_repeat($str, 1000);
$str2 = $str;
function write()
{
file_put_contents("/tmp/abc", "Final Connection:".connection_status()."\n", FILE_APPEND);
}
register_shutdown_function("write");
while(1)
{
	$count = 100000000;
	while($count > 0)
	{
	$count = $count -1;
		if($count%1000000==0)
		{
			var_dump($str1);
			//var_dump($str2);
			ob_flush();
		}
	}
}
?>

If large mount of output is sent like $str1, I will get ABORT signal and script terminated. But if $str2 is sent, it seems that no ABORT signal and script keeps running to TIMEOUT
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Tue Mar 11 19:01:31 2025 UTC