- Adds queue management and supervisor. Issue #227

This commit is contained in:
MrCasual
2015-11-20 16:18:58 -05:00
parent 556a170903
commit 25b51d0446
7 changed files with 199 additions and 17 deletions

View File

@ -2,6 +2,7 @@
namespace MailPoet\Config;
use MailPoet\Models;
use MailPoet\Queue\Supervisor;
use MailPoet\Router;
if(!defined('ABSPATH')) exit;
@ -25,7 +26,8 @@ class Initializer {
$this->setupAnalytics();
$this->setupPermissions();
$this->setupChangelog();
$this->setupPublicAPI();
$this->setupPublicAPI();
$this->runQueueSupervisor();
}
function setupDB() {
@ -34,7 +36,8 @@ class Initializer {
\ORM::configure('password', Env::$db_password);
\ORM::configure('logging', WP_DEBUG);
\ORM::configure('driver_options', array(
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET TIME_ZONE = "+00:00"'
));
$subscribers = Env::$db_prefix . 'subscribers';
@ -49,6 +52,7 @@ class Initializer {
$subscriber_custom_field = Env::$db_prefix . 'subscriber_custom_field';
$newsletter_option_fields = Env::$db_prefix . 'newsletter_option_fields';
$newsletter_option = Env::$db_prefix . 'newsletter_option';
$queue = Env::$db_prefix . 'queue';
define('MP_SUBSCRIBERS_TABLE', $subscribers);
define('MP_SETTINGS_TABLE', $settings);
@ -62,6 +66,7 @@ class Initializer {
define('MP_SUBSCRIBER_CUSTOM_FIELD_TABLE', $subscriber_custom_field);
define('MP_NEWSLETTER_OPTION_FIELDS_TABLE', $newsletter_option_fields);
define('MP_NEWSLETTER_OPTION_TABLE', $newsletter_option);
define('MP_QUEUE_TABLE', $queue);
}
function setupActivator() {
@ -115,5 +120,10 @@ class Initializer {
function setupPublicAPI() {
$publicAPI = new PublicAPI();
$publicAPI->init();
}
}
}
function runQueueSupervisor() {
$supervisor = new Supervisor();
$supervisor->checkQueue();
}
}

View File

@ -21,6 +21,7 @@ class Migrator {
'subscriber_custom_field',
'newsletter_option_fields',
'newsletter_option',
'queue',
'forms'
);
}
@ -199,6 +200,21 @@ class Migrator {
return $this->sqlify(__FUNCTION__, $attributes);
}
function queue() {
$attributes = array(
'id mediumint(9) NOT NULL AUTO_INCREMENT,',
'newsletter_id mediumint(9) NOT NULL,',
'subscribers longtext,',
'total mediumint(9) NOT NULL DEFAULT 0,',
'processed mediumint(9) NOT NULL DEFAULT 0,',
'created_at TIMESTAMP NOT NULL DEFAULT 0,',
'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
'deleted_at TIMESTAMP NULL DEFAULT NULL,',
'PRIMARY KEY (id)',
);
return $this->sqlify(__FUNCTION__, $attributes);
}
function forms() {
$attributes = array(
'id mediumint(9) NOT NULL AUTO_INCREMENT,',