Continue php script after connection close

codeigniter, output-buffering, php

Solution

After some research i got it work, Sometime it may be useful to some others.

function closeOutput($stringToOutput){   
        set_time_limit(0);
        ignore_user_abort(true);
        header("Connection: close\r\n");
        header("Content-Encoding: none\r\n");  
        ob_start();          
        echo $stringToOutput;   
        $size = ob_get_length();   
        header("Content-Length: $size",TRUE);  
        ob_end_flush();
        ob_flush();
        flush();   
} 

You can use it like

$outputContent = 'Contentent Goes Here...';

closeOutput( $outputContent );

sleep(5);

//do some background works ...

exit();

Problem

I am trying to continue a PHP Script after the page/connection is closed. Users will POLL the script in every 1 hour, I want to return some json output and want to continue the script in the background. I am using a shared host and I cannot use cron job. Here is what I've tried. ``` ob_start(); ignore_user_abort(); echo "JSON_OUTPUT GOES HERE"; $ob_length = ob_get_length(); header("Content-Type : text/plain",TRUE); header("Content-Length : $ob_length",TRUE); header("Connection : Close",TRUE); flush(); ob_flush(); ob_end_flush(); sleep(3); echo "You cant see me.."; exit(); ``` I am using Codeigniter framework, But its not working on my live server. It waits 3 seconds and then outputting `You cant see me..` too. Please help me. Note Project is hosted in LINUX/WINDOWS/WAMP-SERVER shared hosts.

Original source