function outputStringAndCloseConnection($stringToOutput) { @set_time_limit(3600); @ignore_user_abort(true); ini_set('zlib.output_compression', 'Off'); if (ini_get('zlib.output_compression') == 1 || ini_get('zlib.output_compression') == 'On' || ini_get('zlib.output_compression') === true) { $isGzipped = false; } else { $isGzipped = true; $stringToOutput = gzencode($stringToOutput, 9, FORCE_GZIP); } @ob_start(); echo $stringToOutput; $size = ob_get_length(); if ($isGzipped) { header("Content-Encoding: gzip"); } header("Content-Length: {$size}"); header('Connection: close'); @ob_end_flush(); @ob_flush(); @flush(); if (function_exists('fastcgi_finish_request')) { fastcgi_finish_request(); } if (Reg::get('currentRequest.runOffBrowserLoad') === 'true') { //this will be first ajax call after Panel loaded in browser runOffBrowserLoad(); } $noNewTaskAfterNSecs = 25; if ($GLOBALS['ajaxPageTimeStart'] + $noNewTaskAfterNSecs > time()) { do { autoPrintToKeepAlive("keepAliveExecuteJobs"); $status = executeJobs(); } while ($status['requestInitiated'] > 0 && $status['requestPending'] > 0 && $GLOBALS['ajaxPageTimeStart'] + $noNewTaskAfterNSecs > time()); } exit; }
runOffBrowserLoad(); exit; } elseif (!empty($_POST['historyID']) && !empty($_POST['actionID'])) { $historyID = $_POST['historyID']; $actionID = $_POST['actionID']; //if(empty($historyID) || empty($actionID)){ echo 'invalidRequest'; exit; } //fix: add some security $isValid = DB::getExists("?:history", "historyID", "historyID = '" . $historyID . "' AND actionID = '" . $actionID . "'"); if ($isValid) { if (empty($GLOBALS['userID'])) { //setting userID of the task to session, because when this file running by fsock, it will not have the same session IWP Admin Panel $userID = DB::getField("?:history", "userID", "historyID = '" . $historyID . "' AND actionID = '" . $actionID . "'"); $GLOBALS['userID'] = $userID; $GLOBALS['offline'] = true; } echo 'executingRequest'; executeRequest($historyID); $isExecuteJobs = true; } } if ($isExecuteJobs || $_REQUEST['executeJobs'] == 'true') { $noNewTaskAfterNSecs = 25; //do additional jobs if ($GLOBALS['executeFileTimeStart'] + $noNewTaskAfterNSecs > time()) { do { autoPrintToKeepAlive("keepAliveExecuteJobs"); $status = executeJobs(); } while ($status['requestInitiated'] > 0 && $status['requestPending'] > 0 && $GLOBALS['executeFileTimeStart'] + $noNewTaskAfterNSecs > time()); } exit; }