对于初学者来说,这是我的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 不处理qeueu中的作业。
要实现这一点,我必须通过运行docker exec -it / bin / sh登录到容器,然后运行 php / var / www / html / artisan queue:work --queue = mailer - sleep = 3 --tries = 3 ,它运行得很好。
所以问题是错误的。