- Resolves an issue with cron not starting

This commit is contained in:
Vlad
2016-01-27 14:14:42 -05:00
parent c60425afb2
commit 746c19d6ed
3 changed files with 21 additions and 14 deletions

View File

@ -20,7 +20,7 @@ class PublicAPI {
Helpers::underscoreToCamelCase($_GET['action']) : Helpers::underscoreToCamelCase($_GET['action']) :
false; false;
$this->request_payload = isset($_GET['request_payload']) ? $this->request_payload = isset($_GET['request_payload']) ?
json_decode(urldecode($_GET['request_payload']), true) : unserialize(base64_decode($_GET['request_payload'])) :
false; false;
} }

View File

@ -112,23 +112,27 @@ class Daemon {
function manageSession($action) { function manageSession($action) {
switch($action) { switch($action) {
case 'start': case 'start':
if(session_id()) { if(session_id()) {
session_write_close();
}
session_id($this->request_payload['session']);
session_start();
if (!isset($_SESSION['cron_daemon'])) {
throw new \Exception(__('Session cannot be read.'));
}
break;
case 'end':
session_write_close(); session_write_close();
} break;
session_id($this->request_payload['session']);
session_start();
break;
case 'end':
session_write_close();
break;
} }
} }
function callSelf() { function callSelf() {
$payload = json_encode(array('token' => $this->refreshed_token)); $payload = serialize(array('token' => $this->refreshed_token));
Supervisor::accessRemoteUrl( Supervisor::accessRemoteUrl(
'/?mailpoet-api&section=queue&action=run&request_payload=' . urlencode($payload) '/?mailpoet-api&section=queue&action=run&request_payload=' .
base64_encode($payload)
); );
exit; exit;
} }

View File

@ -51,12 +51,15 @@ class Supervisor {
$sessionId = session_id(); $sessionId = session_id();
session_write_close(); session_write_close();
$_SESSION['cron_daemon'] = null; $_SESSION['cron_daemon'] = null;
$requestPayload = json_encode(array('session' => $sessionId)); $requestPayload = serialize(array('session' => $sessionId));
self::accessRemoteUrl( self::accessRemoteUrl(
'/?mailpoet-api&section=queue&action=start&request_payload=' . '/?mailpoet-api&section=queue&action=start&request_payload=' .
urlencode($requestPayload) base64_encode($requestPayload)
); );
session_start(); session_start();
if (!isset($_SESSION['cron_daemon'])) {
throw new \Exception(__('Session cannot be read.'));
}
$daemonStatus = $_SESSION['cron_daemon']; $daemonStatus = $_SESSION['cron_daemon'];
unset($_SESSION['daemon']); unset($_SESSION['daemon']);
session_write_close(); session_write_close();