php – Laravel作业队列未使用Redis驱动程序进行处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel作业队列未使用Redis驱动程序进行处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1988字,纯文字阅读大概需要3分钟。
内容图文
![php – Laravel作业队列未使用Redis驱动程序进行处理](/upload/InfoBanner/zyjiaocheng/912/70fb03fd1563441381a905b2ccd4ce21.jpg)
我正在创建一个作业,将其推送到自定义队列,并尝试使用Redis驱动程序然后在它到达队列时处理该作业,但没有成功:
class MyController extends Controller {
public function method() {
$job = (new UpdateLiveThreadJob())->onQueue('live');
$this->dispatch($job);
}
}
这是我的队列配置:
'default' => env('QUEUE_DRIVER'),
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'expire' => 60,
],
这是我的.env文件:
# Drivers (Queues & Broadcasts)
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis
BROADCAST_DRIVER=redis
这是我的工作:
class UpdateLiveThreadJob extends Job implements SelfHandling, ShouldQueue
{
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
// Rerender content
$templatedOutput = view('templates.livethreadcontents')->with([
'updates' => collect(Redis::lrange('live:updates', 0, -1))->reverse()->map(function($update) {
return json_decode($update);
})
])->render();
// Connect to external service
// Update Thread
}
}
实际上,我可以更改handle方法,以确保它在工作中没有任何东西实际上导致它失败,并且它仍然不会处理:
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
print_r('test');
}
使用Redis,我可以看到它被推入队列:
> lrange queues:live 0 -1
> // json encoded job present
> llen queues:live
> // shows there is a job in the queue
然而,据我所知,它实际上从未发生过.观看php工匠队列:listen什么都不显示(只有不相关的事件广播).这里发生了什么?
解决方法:
你还记得运行php工匠队列吗:listen –queue = live?
您需要在运行listen命令时定义队列名称,否则您最终只会侦听默认队列.
如果您想在生产中运行多个队列和管理事物,您可以使用类似于Upstart(与设置Laravel队列无直接关系,但提供了一个良好的起点)或Supervisor来管理流程.这两种都可以在Forge和Homestead上找到.
最后假设您使用的是Laravel 5,您可能需要考虑运行php artisan queue:work –daemon –queue = live,因为这样可以减少运行worker的CPU开销,因为它不会为每个作业重新加载框架.但是,您必须记住在为作业部署新代码时重新启动工作程序,否则将无法获取任何内容.
内容总结
以上是互联网集市为您收集整理的php – Laravel作业队列未使用Redis驱动程序进行处理全部内容,希望文章能够帮你解决php – Laravel作业队列未使用Redis驱动程序进行处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。