懒加载
参考文档: https://laravel.com/docs/6.x/releases
懒加载和传统加载的区别:传统的数据加载是一下把所有的数据加载起来,给数据库和内存造成很大压力,如果一个人访问还好说,上千上万人呢。而懒加载是一直在加载数据,如果加载的数据过多的话,可能会稍微慢点,但是极大地减轻了数据库的压力。
日志懒加载
- 主要使用LazyCollection加上一个闭包函数,一行一行的处理数据
chunk
是分块处理数据,下面的chunk(4)
是指每次处理4条数据,chunk
中也可以使用闭包函数,在闭包函数中写怎么处理这几条数据map
是对查询结果进行处理,相当于get之后进行foreacheach
方法是对数据进行分析
use App\LogEntry;
use Illuminate\Support\LazyCollection;
LazyCollection::make(function () {
$handle = fopen('log.txt', 'r');
while (($line = fgets($handle)) !== false) {
yield $line;
}
})
->chunk(4)
->map(function ($lines) {
return LogEntry::fromLines($lines);
})
->each(function (LogEntry $logEntry) {
// Process the log entry...
});
加载Model数据
- 调用
cursor
方法就会调用懒加载机制获取数据
原来的
$users = App\User::all()->filter(function ($user) {
return $user->id > 500;
});
使用懒加载之后
$users = App\User::cursor()->filter(function ($user) {
return $user->id > 500;
});
定时任务
使用场景:比如每天早上提醒用户啥啥啥
参考文档:https://laravel.com/docs/6.x/scheduling