А раз такая вешь полезна - а тем более мне понадобилось с ней разобраться - то я за сегодня сделал набросок кода для работы с очередью сообщений на Gearman http://gearman.org/.
Правда, толком протестить не успел
https://github.com/mitallast/yii-gearman
Это расширение позволяет регистрировать контроллеры и их действия в gearman.
Пример использования:
Добавляем компонент в конфиг приложения:
Код: Выделить всё
'gearmanManager'=>array(
'class'=>'GearmanManager',
'servers'=>array(
'192.168.56.101',
),
'routes' => array(
'reverse' => array('gearman','reverse'),
),
),
Код: Выделить всё
class GearmanController extends AbstractGearmanController
{
public function actionReverse(GearmanJob $job)
{
return strrev($job);
}
}
Код: Выделить всё
<?php
// change the following paths if necessary
$yii=dirname(__FILE__).'/../yii/yii.php';
$config=dirname(__FILE__).'/protected/config/main.php';
require_once($yii);
// create application
Yii::createWebApplication($config);
// run gearman worker
Yii::app()->gearmanManager->run();
Код: Выделить всё
<?php
$client = new GearmanClient();
$client->addServer('192.168.56.101');
//$result = $client->do("reverse", "string");
$client->addTaskBackground("reverse", "string");
$client->runTasks();