I have a controller with an action that accepts requests over AJAX, does some data manipulation, and returns some data: function publicDirectoryAjaxSearch(){ // Check the form token JSession::checkToken('get') or die('Invalid Token'); // Don't show PHP errors in raw output ini_set('display_errors', 'Off'); // Sort out the session status $session = JFactory::getSession(); $session->set('getOrganisationsStatus', 'Searching...'); // Get orgs $response = $this->doPublicDirectorySearch(); // Get the document object. $document = JFactory::getDocument(); // Set the MIME type for JSON output. $document->setMimeEncoding('application/json'); // Change the suggested filename. JResponse::setHeader('Content-Disposition','attachment;filename="result.json"'); echo json_encode($response); } This method can take a while, so I'm using JSession to store a status variable `getOrganisationStatus` that can be periodically checked via AJAX to see how far the `$this->doPublicDirectorySearch()` method has gotten... function doPublicDirectorySearch(){ ... while($running) $session->set('getOrganisationsStatus', 'Fetched '.$handled."/".$totalResults." results."); ... } However, I'm having some issues. If I set the Joomla global config session handler to **Database** the `getOrganisationsStatus` session variable always seems to 'lag' 1 data request behind. For example (in prep for this example I cleared all existing sessions): 1. Make a data request via AJAX to `publicDirectoryAjaxSearch` 2. Set an interval to get the request status session variable over AJAX to `publicDirectorySearchStatus` 3. Data request still running. Session value changing as `$this->doPublicDirectorySearch()` works through data 4. Status call made from setInterval to `publicDirectorySearchStatus`. Returned session variable is empty (this step repeats over the interval) 5. `publicDirectoryAjaxSearch` data request completes. Method returns JSON object 6. Final status call made over AJAX from setInterval to `publicDirectorySearchStatus`. Returned data (the session variable) now shows the correct text as set in the data request method. If I set the Joomla global config to use **None** as the session handler (i.e. PHP's built in file-based handler) then the script blocks (as [PHP locks the session file][1] when a script accesses it, so the AJAX call to find out the status has to wait til the method updating the session variable finishes - defeating the point somewhat). Where am I going wrong? How can I.. 1. Make a call to get data (takes some time) 2. Make a separate call to get a session variable that's being manipulated over time by the first call [1]: http://stackoverflow.com/questions/1174378/php-blocking-when-calling-the-same-file-concurrently