PHP code example of ilepilin / queue
1. Go to this page and download the library: Download ilepilin/queue library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ilepilin / queue example snippets
'payloadMap' => [
'libs\queue\component1\Payload' => 'common\components\queue\component1\Payload',
'libs\queue\component2\Payload' => 'common\components\queue\component2\Payload',
],
'components' => [
...
'queue' => [
'class' => '\ilepilin\queue\QueueFacade',
'drivers' => [
[
'class' => '\ilepilin\queue\driver\RabbitMQ',
'host' => '127.0.0.1',
'port' => 5672,
'user' => 'rabbitmq',
'password' => '******',
'payloadMap' => [
'libs\queue\component1\Payload' => 'common\components\queue\component1\Payload',
],
'loggerClass' => '\yii\log\Logger',
],
[
'class' => '\ilepilin\queue\driver\MySQL',
'username' => 'project_user',
'password' => '******',
'host' => '127.0.0.1',
'port' => 3307, // если порт не стандартный
'dbname' => 'project_db',
'payloadMap' => [
'libs\queue\component1\Payload' => 'common\components\queue\component1\Payload',
],
'loggerClass' => '\yii\log\Logger',
// указать true, когда таблица для резервной очереди будет создана.
// в противном случае, при каждом использовании драйвера будет лишний SQL запрос для проверки существования таблицы
'isTableCreated' => true,
]
],
],
...
]
/** @var \ilepilin\queue\BasePayload $payload */
$payload = new Payload($data);
Yii::$app->queue->push(Worker::channelName(), $payload);
/** @var \ilepilin\queue\WorkerInterface $worker */
$worker = new \path\to\Worker();
/** @var \ilepilin\queue\QueueFacade $facade */
$facade = Yii::$app->get('queue');
$listener = new \ilepilin\queue\listener\Listener($facade, $worker);
$listener->handle();
// $listener->handle(\ilepilin\queue\driver\MySQL::getCode()); // для резервных очередей
$channelNames = [
Worker1::channelName(),
Worker2::channelName(),
Worker3::channelName(),
...
];
/** @var \ilepilin\queue\QueueFacade $facade */
$facade = Yii::$app->queue;
$driver = $facade->getDriver(\ilepilin\queue\driver\MySQL::getCode());
foreach ($channelNames as $channelName) {
while ($message = $driver->pop($channelName)) {
$facade->push($channelName, $message->data, 300);
}
}
bash
php composer.phar
bash
php daemon.php channel_name