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.