队列
- 使用队列的目的
- 将耗时的任务进行延时处理,比如发送邮件、从而大幅度缩短 Web 请求和响应的时间。
- 队列的名字
在队列的配置文件中,每一个connection中都有一个queue的参数,即为队列的名称。
// 这个任务将被分发到默认队列...
Job::dispatch();
// 这个任务将被发送到「emails」队列...
Job::dispatch()->onQueue('emails');
- 队列的优先级
指定队列的优先级php artisan queue:work --queue=high,default
,有限处理某些任务
任务中间件
/**
* 执行队列.
*
* @return void
*/
public function handle()
{
Redis::throttle('key')->block(0)->allow(1)->every(5)->then(function () {
info('Lock obtained...');
// 处理队列...
}, function () {
// 无法获取锁…
return $this->release(5);
});
}
文件存储
Storage Facade 可用于与任何已配置的磁盘进行交互。
- 默认存储
Storage::put('avatars/1', $fileContents);
- 指定存储
Storage::disk('s3')->put('avatars/1', $fileContents);
- 检索文件
$contents = Storage::get('file.jpg');
- 判断文件是否存在
$exists = Storage::disk('s3')->exists('file.jpg');
- 下载文件
return Storage::download('file.jpg');
- 文件 URLs
使用 url 方法来获取给定文件的 URL
use Illuminate\Support\Facades\Storage;
$url = Storage::url('file.jpg');
- 指定上传文件的文件名
$path = $request->file('avatar')->storeAs(
'avatars', $request->user()->id
);