문제

how i can know in my php code when a data transfer is closed by the client ?

i have found this code (bellow) on stackoverflow but i want to write a text into a file when the client close him window...

<?php
        header('Content-Encoding', 'chunked');
        header('Transfer-Encoding', 'chunked');
        header('Content-Type', 'text/html');
        header('Connection', 'keep-alive');

        ob_flush();
        flush();

        $p = "";  //padding
        for ($i=0; $i < 1024; $i++) { 
            $p .= " ";
        };
        echo $p;

        ob_flush();
        flush();

        for ($i = 0; $i < 10000; $i++) {
            echo "string";
            ob_flush();
            flush();
            sleep(2);
        }

?>
도움이 되었습니까?

해결책

By calling connection_aborted() you can find out if the client is still connected or not. This could be done within your for loop like below.

Also you will need to tell PHP to continue execution after the client disconnects by calling ignore_user_abort(). If you don't do that, your script will terminate as soon as the client disconnects. Depending on your PHP config, you may also need to set a larger or unlimited time limit using set_time_limit().

ignore_user_abort(true);

for ($i = 0; $i < 10000; $i++) {

     if(connection_aborted()){
         // client disconnected, write to file here
     }

     echo "string";
     ob_flush();
     flush();
     sleep(2);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top