首先,这是我的 Docker 容器中的进程列表:
/var/www/html # ps aux
PID USER TIME COMMAND
1 root 0:00 {php-fpm.sh} /bin/sh /php-fpm.sh
6 root 0:02 /usr/sbin/crond
8 root 0:00 /sbin/syslogd -D -s 500
10 root 1:31 php /var/www/html/artisan queue:work --queue=mailer --sleep=3 --tries=3
11 root 0:00 /usr/bin/logger -t mailer
12 root 0:24 php-fpm: master process (/usr/local/etc/php-fpm.conf)
25 root 0:02 /usr/sbin/crond
30 root 0:01 /sbin/syslogd -D -s 500
13505 www-data 6:20 php-fpm: pool www
21682 www-data 0:17 php-fpm: pool www
21837 root 0:00 /bin/sh
22078 www-data 0:00 php-fpm: pool www
22123 root 0:00 ps aux
31186 root 0:00 /bin/sh
31301 root 0:00 /bin/sh
这是我的容器的入口点:
#! /bin/sh
# Start cron daemon
/usr/sbin/crond
# Logger, max log file size 500Kb
/sbin/syslogd -D -s 500
( php /var/www/html/artisan queue:work \
--queue=mailer \
--sleep=3 --tries=3 2>&1 | /usr/bin/logger -t mailer & )
# Run PHP-FPM
php-fpm -F
问题是php /var/www/html/artisan queue:work不处理队列中的作业。
为此,我必须通过运行 docker exec -it /bin/sh 登录到容器,然后运行php /var/www/html/artisan queue:work --queue=mailer --sleep=3 --tries =3,它工作得很好。
所以问题是出了什么问题。