mitallast / Yii Gearman
WARNING!
This extension is deprecated, and I will no longer support this. On my experience, Gearman is not really failover server by design, do not use it for critical business apps. My recommendation - use fast and simple queue servers like beanstalkd, or queued with enabled binlog.
Это расширение представляет из себя набор компонентов для реализации воркеров. Воркеры - это асинхронные приложения, которые выполняют фоновую работу типа рассылки писем, ресайза картинок или импорта множества xml файлов.
Пример использования.
Допустим, у нас обычная структура Yii app:
protected/
components/
controllers/
models/
extensions/
...
Загружаем расширение в protected/extensions/worker/ .
Создаем новый конфигурационный файл protected/config/worker.php:
return array(
"basePath"=>dirname(FILE).DIRECTORY_SEPARATOR."..",
"import"=>array(
"ext.worker.*",
),
"components"=>array(
"worker"=>array(
"class"=>"WorkerDaemon",
"servers"=>array("127.0.0.1"),
),
"router"=>array(
"class"=>"WorkerRouter",
"routes"=>array(
"reverse"=>"application.controllers.gearman",
),
),
),
);
Создаем bootstrap файл protected/worker.php, которым будет запускаться скрипт.
// change the following paths if necessary
$yii="yii/yii.php";
$config="config/worker.php";
require_once($yii); require_once("extensions/worker/WorkerApplication.php");
Yii::createApplication("WorkerApplication", $config)->run();
Добавим контроллер:
class WorkerController extends AbstractWorkerController
{
public function actionReverse(WorkerJob $job)
{
$job->sendComplete($job->getWorkload());
echo $job->getWorkload();
echo "\n";
}
}
Запустим воркер в консоли:
home$: php protected/worker.php
И попробуем запустить его:
$client = new GearmanClient();
$client->addServer("127.0.0.1");
//$result = $client->do("reverse", "string"); $client->addTaskBackground("reverse", "Hello world"); $client->runTasks();
В консоли, где запустили воркер, вы увидите собственно переданное от клиента сообщение.