在CentOS上使用Laravel队列,你需要遵循以下步骤:
-
安装Laravel项目:首先,确保你已经在CentOS服务器上安装了Laravel。如果还没有,请参考Laravel官方文档进行安装:https://laravel.com/docs/8.x/installation
-
配置队列驱动:在
.env
文件中,设置队列驱动。例如,你可以使用Redis、Beanstalkd或数据库作为队列驱动。这里以Redis为例:
QUEUE_CONNECTION=redis REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
确保你已经安装并启动了Redis服务。
- 创建队列工作器:在命令行中,运行以下命令来创建一个新的队列工作器:
php artisan queue:work
这将启动一个监听队列并处理任务的工作器。你可以使用--queue
选项指定要监听的队列名称,例如:
php artisan queue:work --queue=high,default
- 将任务添加到队列:在你的应用程序中,你可以使用
dispatch
函数将任务添加到队列。例如:
use App\Jobs\YourJob;
// ...
public function store(Request $request)
{
// ...
dispatch(new YourJob($data));
// ...
}
确保你已经创建了相应的Job类。你可以使用php artisan make:job YourJob
命令来创建一个新的Job类。
- 监控队列进度:你可以使用以下命令查看队列工作器的状态和进度:
php artisan queue:work --queue=high,default --sleep=3 --tries=3
这将使工作器在每次尝试之间等待3秒,并在连续3次失败后停止尝试。
- 使用Supervisor管理队列工作器:为了确保队列工作器在后台持续运行,你可以使用Supervisor来管理它们。首先,安装Supervisor:
sudo yum install epel-release sudo yum install supervisor
接下来,创建一个新的Supervisor配置文件:
sudo vi /etc/supervisor/conf.d/queue-worker.conf
将以下内容粘贴到配置文件中,根据需要进行修改:
[program:queue-worker] process_name=%(program_name)s_%(process_num)02d command=php /path/to/your/laravel/project/artisan queue:work --sleep=3 --tries=3 --daemon autostart=true autorestart=true user=your-user numprocs=8 redirect_stderr=true stdout_logfile=/path/to/your/laravel/project/storage/logs/worker.log stopwaitsecs=3600
保存并退出配置文件。然后,运行以下命令重新加载Supervisor配置并启动队列工作器:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start queue-worker:*
现在,你的Laravel队列已经在CentOS上运行了。你可以根据需要调整配置,例如增加队列工作器的数量或更改监听的队列。