1、什麼是yii2-queue?php
Yii2-queue是Yii2.0 PHP框架下一個消息隊列拓展插件,支持基於DB, Redis, RabbitMQ, AMQP, Beanstalk 和 Gearman等。yii2-queue GitHub地址:https://github.com/yiisoft/yii2-queuemysql
2、如何安裝yii2-queue?linux
php composer.phar require --prefer-dist yiisoft/yii2-queuegit
3、Linux systemd介紹github
systemd是linux下的一款系統和服務管理器,爲何要使用systemd ? 在rpm包二進制方式安裝的linux軟件中,使用init守護進程進行服務狀態的管理或者使用service命令 例如啓動Mysql數據庫能夠是 /etc/init.d/mysql start 或者service mysql start.sql
使用linux init進程進行管理服務的時候有兩個缺點:數據庫
1.init系統進程是串行執行的,也就是同步的 ,只有前一個進程啓動完成,纔會啓動下一進程。yii2
2.啓動腳步複雜,init進程是隻執行啓動腳步,無論其餘的任務app
使用Systemd優勢:composer
1.Systemd支持並行化任務,
2.同時採用socket於D-Bus總線式激活服務,按需啓動守護進程(daemon)
在新版的Linux系統中都在使用sytemd 進行管理 例如(Ubuntu 1六、Debian 八、CentOS 7)
4、在Linux建立systemd系統服務監聽隊列消息
一、在Linux下進入system目錄,相關命令:cd /etc/systemd/system;
二、新增yii-queue@.service文件,相關命令:vi yii-queue@.service;
三、yii-queue@.service文件內容以下:
[Unit] Description=Yii Queue Worker %I After=network.target # the following two lines only apply if your queue backend is mysql # replace this with the service that powers your backend After=mysql.service Requires=mysql.service [Service] User=www-data Group=www-data ExecStart=/usr/bin/php /var/www/my_project/yii queue/listen --verbose Restart=on-failure [Install] WantedBy=multi-user.target
四、重載systemd配置文件使其生效,相關命令:systemctl daemon-reload;
五、其餘相關命令:
# To start two workers systemctl start yii-queue@1 yii-queue@2 # To get the status of running workers systemctl status "yii-queue@*" # To stop a specific worker systemctl stop yii-queue@2 # To stop all running workers systemctl stop "yii-queue@*" # To start two workers at system boot systemctl enable yii-queue@1 yii-queue@2