PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

connection_timeout> <connection_aborted
Last updated: Fri, 10 Oct 2008

view this page in

connection_status

(PHP 4, PHP 5)

connection_status接続ステータスのビットフィールドを返す

説明

int connection_status ( void )

接続ステータスのビットフィールドを取得します。

返り値

接続ステータスのビットフィールドを返します。これを定数 CONNECTION_XXX と比較することで、接続の状態を判断できます。

参考



connection_timeout> <connection_aborted
Last updated: Fri, 10 Oct 2008
 
add a note add a note User Contributed Notes
connection_status
ivo_gelov at gmx dot net
10-Apr-2008 03:01
Good idea for DB engines like MySQL with MyISAM which do not support transactions. But imagine that user requests a page with many (hundred) image thumbnails. Or if a PDF is generated from a HTML on-the-fly. This usually takes several minutes and if the user does not want to wait and aborts connection - PHP continues until all work is done.
In my opinion it will be MUCH more smarter (PHP is mature enough) to use signalling and terminate script immediately when connection is aborted instead of making presumptions that script author will continuously doing output and periodically flushing output buffer just in order to detect connection abort.
Mhm ....
Michael
21-Mar-2005 04:59
Yes it is true. I made some experiments with that functions 'connection_abortes()'. First a source made an error, which I see. They wrote: ignore_user_abort();

But that only gives you the status of the 'Abort-Setting'.
So I try (with little hope)
  'ignore_user_abort(true);'
And as I readout the setting it has changed it...

Next I see that the script runs after I disconnect with the site. But other experiments fail. I try some things and then it
was logical after an experiment: flush() is one of the necessary things. Without those output to the client the function
          'connection_aborted()' stays on 'false'
The Second is that you have to output something. Without that it also doesn't works.
So I now know that you have to echo something and then output the buffer. Only then 'the Script' (or the function)
'knows' that the client is disconnected.
toppi at kacke dot de
17-Jun-2004 02:06
Notice !

if you running a loop (while, foeach etc..)  you have to send something to the browser to check the status.

Example:

while(1){
    if (connection_status()!=0){
    die;
    }
}
doesnt work, if the user break/close the browser.

But a:

while(1){
    Echo "\n"; //<-- send this to the client
    if (connection_status()!=0){
    die;
    }
}
will work :)

i hope it will help some of you to safe some time :)

Toppi
carlos at fischerinformatica dot com dot br
31-Jan-2002 01:58
Very very useful!
I was building a chat and I wanted my script to detect when the browser was closed, so the user could be deleted from the online_users table.

<?
echo str_repeat(" ",300);
ignore_user_abort(true); //this way, the user can stop the output, but not the script.
while (true) {
         echo
"test<br>\n";
        
flush();
        
sleep(2);
         if (
connection_status()!=0){
                 include (
'dbconnect.inc');
                
$sql="delete from online_users where online_user=$user";
                
$sql_exec=pg_exec($vChatDB, $sql);
                 die();
//kills the script
        
}
}
?>

connection_timeout> <connection_aborted
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites