我们使用bitbucket管道设置权限,进行作曲家安装,并且重要的是,在后期部署上,我们执行以下操作:
php artisan migrate
nohup php artisan queue:work --daemon >/dev/null 2>&1 &
php artisan up
太好了,所以当管道运行时,我们正在为queue:work
创建一个新的后台进程。
我的问题是 pre-deploy 挂钩首先运行。在所有这些之前,我们运行:
php /var/www/html/artisan queue:restart
php /var/www/html/artisan down
我希望queue:workers被停止,因为事实证明是本地运行,甚至直接在服务器上执行queue:restart
时都是这样。但是,每次管道运行时,queue:restart似乎什么都不做,我们创建了另一个正在运行的进程。现在,我们有15个正在运行的laravel作业队列进程,因为管道并没有杀死旧的进程。
以下是管道文件中脚本的摘录:
script:
- apt-get update && apt-get install -y git rsync unzip libmcrypt-dev
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
- composer install
- ssh $DEPLOY_USER@$STAGING_EC2_INSTANCE "[ -f /var/www/html/pre-deploy-hook ] && /var/www/html/pre-deploy-hook" || echo "No pre deploy hook found."
- rsync -v -a -z --delete --exclude "storage/" --exclude ".git" . $DEPLOY_USER@$STAGING_EC2_INSTANCE:/var/www/html
- ssh $DEPLOY_USER@$STAGING_EC2_INSTANCE "/var/www/html/post-deploy-hook-staging"
有人知道如何停止Laravel工作队列工作人员吗? queue:restart
绝对应该起作用。在管道中实现此功能的任何人都没有答案吗?
谢谢!