Php Lavel 5.x,Redis队列生成大量日志
我有一个项目是用Laravel和Redis队列设置的。应用程序配置为在收到消息时发送推送通知。一旦收到消息,它就会存储在数据库中,并生成推送:Php Lavel 5.x,Redis队列生成大量日志,php,laravel-5,redis,queue,broadcast,Php,Laravel 5,Redis,Queue,Broadcast,我有一个项目是用Laravel和Redis队列设置的。应用程序配置为在收到消息时发送推送通知。一旦收到消息,它就会存储在数据库中,并生成推送: dispatch(新建CreateMessageNotification($message)) 项目正在使用Redis队列和服务提供程序。问题是,如果不执行以下命令,队列调度将不起作用: php artisan队列:工作redis——守护进程 但是,当我们运行这个命令时,应用程序开始生成下面的错误日志。似乎有些常规程序在某个地方被卡住了,我们无法弄清楚在
dispatch(新建CreateMessageNotification($message))代码>
项目正在使用Redis队列和服务提供程序。问题是,如果不执行以下命令,队列调度将不起作用:
php artisan队列:工作redis——守护进程
但是,当我们运行这个命令时,应用程序开始生成下面的错误日志。似乎有些常规程序在某个地方被卡住了,我们无法弄清楚在哪里,为什么,如何?如果不运行此脚本,推送通知将不起作用。如果我们运行这个脚本,推送通知会延迟工作,并且会生成错误日志,日志大小在一个小时内达到GB。我们做错了什么
我们正在使用Redis/Predis:
'redis' => [
'client' => 'predis',
'cluster' => env('REDIS_CLUSTER', false),
'default' => [
'host' => env('REDIS_HOST', 'localhost'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
'timeout' => 15.0,
],
],
对于广播,我们使用Pusher:
'default' => env('BROADCAST_DRIVER', 'pusher'),
对于队列,我们使用Redis:
'default' => env('QUEUE_DRIVER', 'sync'),
QUEUE_DRIVER=redis
'default' => env('CACHE_DRIVER', 'file'),
CACHE_DRIVER=redis
对于缓存,我们使用Redis:
'default' => env('QUEUE_DRIVER', 'sync'),
QUEUE_DRIVER=redis
'default' => env('CACHE_DRIVER', 'file'),
CACHE_DRIVER=redis
CreateMessageNotification
<?php
namespace App\Jobs\EventHandlers;
use App\Events\Notifications\NewMessageCreatedEvent;
use App\Repositories\UserDevicesRepository;
use Event;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class CreateMessageNotification implements ShouldQueue
{
use InteractsWithQueue, Queueable, SerializesModels;
private $message;
public function __construct($message)
{
$this->message = $message;
}
public function handle()
{
Event::fire(new NewMessageCreatedEvent($this->message));
}
}
对我来说,有效的方法是从队列中删除所有失败的作业(在再次尝试重试后):
重新运行队列:
php artisan queue:work redis --daemon
此外,我还不得不摆脱打给Pusher的电话,这些电话都没能让这一切正常进行
php artisan queue:work redis --daemon