У меня есть приложение laravel 5.6, которое перечисляет элементы на странице и одновременно собирает просмотры. На создание страницы в среднем ушло 8 секунд.
Элемент таблицы
CREATE TABLE IF NOT EXISTS items (
id INT AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
views INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
Таблица items_daily_views
CREATE TABLE IF NOT EXISTS items_daily_views (
id INT AUTO_INCREMENT,
item_id INT NOT NULL,
date DATE NOT NULL,
views INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
Модель товара
class Item extends Model{
protected $table='items';
}
Модель ItemDailyViews
class ItemDailyViews extends Model{
protected $table='items_daily_views';
}
HomeController.php
$itemList = Item::orderBy('id','desc')->take(100)->get();
foreach($itemList as $item){
//increment to items
$each=Item::find($item->id);
$each->increment('views');
//increment to items_daily_views
$each=ItemDailyViews::updateOrCreate(
['item_id'=>$item->id,
'date'=>Carbon::now()->format('Y-m-d')]
);
$each->increment('views');
}
return view('home',['itemList',$itemList]);
Эта страница содержит около 200 запросов на обновление, на создание которых ушло 8 секунд. Прежняя версия этого приложения использует чистый PHP без laravel и использует для генерации около 10 миллисекунд (также значительно меньше оперативной памяти). Я должен сделать что-то не так. Пожалуйста помоги. Спасибо!