class Bgtask_Manager (Управление фоновыми задачами)

Класс Bgtask_Manager используется для управления фоновыми задачами, отправки им сигналов, сбора статистики.

Необходимо помнить, что в качестве хранилища информации о задачах и сигналах по умолчанию используется MEMORY-таблица базы данных MySQL. При работе в development-режиме система собирает статистику по обращениям к базе данных, что приводит к утечке памяти в Zend_Db_Profiler. Отключайте режим разработчика при анализе хода выполнения фоновой задачи, если вы хотите узнать реальное потребление оперативной памяти.

class Bgtask_Manager

{

/**
* Инстанцировать объект
* @return Bgtask_Manager
*/

static public function getInstance();

/**
* Установить адаптер хранилища заданий
* @param Bgtask_Storage $storage
*/

public function setStorage(Bgtask_Storage $storage);

/**
* Установить адаптер логгирования
* @param Bgtask_Log $logger
*/

public function setLogger(Bgtask_Log $logger);

/**
* Получить адаптер логгирования
*/

public function getLogger();

/**
* Запустить выполнение фоновой задачи
* @param string $launcher - const, task launcher
* @param string $task - task object class name
* @param array $config
*/

public function launch($launcher , $task , array $config)

/**
* Получить список заданий
* @return array
*/

public function getList()

/**
* Получить информацию о задаче по ее pid
* @param integer $pid
* @return array
*/

public function get($pid)

/**
* Послать сигнал фоновой задаче
* @param integer $pid
* @param integer $signal - const
* @return void
*/

public function signal($pid , $signal)

/**
* Установить конфигурацию задачи
* @param integer $pid
* @param array $config
* @return void
*/

public function setConfig($pid , array $config)

/**
* Получить конфигурацию задачи
* @param integer $pid
* @return array
*/

public function getConfig($pid)

/**
* Уничтожить задачу
* @param integer $pid
* @return boolean
*/

public function kill($pid)

/**
* Получить сигналы, предназначенные конкретной задаче по ее pid
* @param integer $pid
* @param boolean $clean — optional, очистить сигналы после получения
* @return array();
*/

public function getSignals($pid , $clean = false)

/**
* Удалить сигналы, предназначенные конкретной задаче по ее pid
* @param integer $pid
* @param array $sigId - optional
* @return array
*/

public function clearSignals($pid , $sigId = false)

/**
* Обновить состояние задачи
* @param integer $pid - идентификатор
* @param integer $opTotal - к-во ожидаемых операций
* @param integer $opFinished — к-во завершенных операций
* @param integer $status - константа, статус
*/

public function updateState($pid , $opTotal , $opFinished , $status)

/**
* Проверить выполняется ли задача
* @param integer $pid
* @return boolean
*/

public function isLive($pid)

/**
* Завершить выполнение (статус завершена)
* @param integer $pid
*/

public function setFinished($pid)

/**
* Остановить выполнение задачи
* @param integer $pid
*/

public function setStoped($pid)

/**
* Установить ошибку выполнения задачи
* @param integer $pid
*/

public function setError($pid)

/**
* Запустить выполнение задачи
* @param integer $pid
*/

public function setStarted($pid)

/**
* Добавить задачу и получить ее идентификатор (pid)
* @param string $description
* @return integer
*/

public function addTaskRecord($description)

}

Пример запуска выполнения фоновой задачи:

// инициализируем хранилище заданий
$bgStorage = new Bgtask_Storage_Orm(	Model::factory('bgtask') , Model::factory('Bgtask_Signal'));
// инициализируем логгер
$logger = new Bgtask_Log_File('./.log/test'.date('YmdHis').'.txt'); 
// инициализируем Менеджер Фоновых Заданий 
$tManager
= Bgtask_Manager::getInstance(); // Устанавливаем хранилище и логгер $tManager->setStorage($bgStorage); $tManager->setLogger($logger); // Запускаем задачу 'Task_Test' $pid = $tManager->launch(Bgtask_Manager::LAUNCHER_JSON, 'Task_Test' , array());

comments powered by Disqus