学过资料结构的朋友一定不陌生,queue 是一种先进先出的资料结构。
而 Laravel 的 queue job 是一个类似待办清单的功能,以 queue 的方式储存待办的任务 (job),然後会有小精灵依序帮你执行 X)
queue job 可以分成两块工作来看,一是把任务排进队伍里、二是执行任务;算是一个生产者消费者的模型。
新增一个 job class,在 handle 方法里写这个 job 具体要做的事。详细请参阅官方文件
$ php artisan make:job JOB_NAME
新增一个 job 到队伍里:
// This job is sent to the default connection's default queue...
MyJobClass::dispatch();
// This job is sent to the default connection's "emails" queue...
MyJobClass::dispatch()->onQueue('emails');
dispatch
底层其实是把任务 push
到 driver
。
做 push
前,系统会先去看要推送到哪个 driver
,driver
就是我们排队的地方,可以是资料库、Redis 等。有哪些 driver
和连线参数可以在config/queue.php
设定。
知道是要 push
到哪个 driver
後,会去看这个 driver
是否已建立连线;有就用,没有就建立,最後才 push job 到 driver
// 这两个应该会是一样的
Queue::connection('Database')->push(new MyJobClass());
MyJobClass::dispatch()->onQueue('Database');
如果没有指定 driver,Laravel 会采用预设的 driver (config/queue.php['default']
)
Queue::push(new MyJobClass());
让小精灵开始工作的咒语
$ php artisan queue:work
很常有人会问说 ㄟㄟ 怎麽不能用全域搜寻料号 这时我只能回答没有买这功能 就是原厂右上角的框框 那麽...
目录 火焰制作 上一篇实作了简易的粒子系统(水柱),那今天就要实作稍微复杂多层次的粒子系统,那就开...
在创业的过程中常常会迷失自我 YC SUS 里面有个 Weekly Updates 的机制 要求创业...
昨天提到了互动事件(Action)基本上能解决大部分页面中互动的需求,但若要能够跨元件来进行互动,例...
前面讲完官方的14种Contracts,但我们也能建立属於自己的Contracts,以下范例是实作一...