Это короткая заметка по настройке работы очередей с laravel 5.
Вся работа выполняется на vagrant – Ubuntu 14.04.1
1. Установка Beanstalkd. На данный момент в репозитории доступна версия (1.9)
1 |
sudo apt-get install beanstalkd |
2. Установка GUI для beanstalkd
1 2 |
cd ~ git clone https://github.com/ptrofimov/beanstalk_console.git beanstalkd |
Далее настоить nginx:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
server { root /home/vagrant/beanstalkd/public; server_name beanstalkd.loc; include /etc/nginx/templates/default; location / { try_files $uri $uri/ /index.php?q=$uri&$args; index index.php index.html index.htm; } location ~ \.php$ { include templates/fastcgi; fastcgi_param argc 0; } } |
templates/fastcgi:
1 2 3 4 5 6 |
fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
Рестарт nginx
3. Пример консольного скрипта laravel для очередей:
Создается командой:
1 |
php artisan make:command MyQueueJob --queued |
Тестовый пример команды:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php namespace App\Commands; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Bus\SelfHandling; use Illuminate\Contracts\Queue\ShouldBeQueued; class MyQueueJob extends Command implements SelfHandling, ShouldBeQueued { use InteractsWithQueue, SerializesModels; protected $id; /** * Create a new command instance. * * */ public function __construct($id) { $this->id = $id; } /** * Execute the command. * * @return void */ public function handle() { echo $this->id . PHP_EOL; } } |
4. Настройка upstart
1 2 |
cd /etc/init sudo vim artisan.conf |
Вставить настройки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
description "Artisan" setuid www-data setgid www-data # used to be: start on startup # until we found some mounts weren't ready yet while booting: start on runlevel [2345] stop on runlevel [06] # Automatically Respawn: respawn respawn limit unlimited script chdir /var/www/project exec /usr/bin/php artisan queue:listen --env=local --tries=1 \ >> /var/www/project/log/artisan.log 2>&1 end script |
Запуск нового фонового процесса:
1 |
sudo start artisan |
Если надо остановить:
1 |
sudo stop artisan |
5. Добавление задания в очередь:
Выполнить PHP код:
1 2 3 4 5 |
use App\Commands\MyQueueJob; Bus::dispatchToQueue( new MyQueueJob(543) ); |
Если все настроено правильно, то через некоторое время в /var/www/project/log/artisan.log появится запись 543
Просмотров : 6516