разработчики все время советуют перейти на новые технологии а если точнее на Laravel и с MySQL на PostgreSQL чтоб сайт не только стал современным но и работал шустрее.Переход с самописа на лару - хороший шаг, переход на постгрес нужен только если нужны конкретные задачи, решаемые постгресом лучше чем мускулем. Например, если у вас есть большой массив json данных, хранимых в соответствующих полях и требующий каких-либо выборок на основании этих полей, то есть по сути - если у вас база хранит ненормализованные сортируемые данные. В остальном выгода от перехода с мускуля на постгрес будет не видна без микроскопа.
Ребят вы знаете, в чем проблема, и куда копать....Нет конечно... Берете код, бьете на блоки, расставляете метки времени, отчет по затраченному времени пишете в лог. Проблемные места смотрите и решаете можете ли уменьшить время исполнения. Вангую что самые тормоза у вас будут на выборке из бд или на запросах к апи. В случае бд - вывести запрос и сделать explain. По результату уже можно будет что-то советовать. В случае тормозов с апи - тут уже ничего в плане оптимизации сильно не придумаешь, но в любом случае задачи лучше будет скинуть в очередь и уже оттуда они будут выполняться, пока не закончится список. Кроме того, выборка по одной записи из бд в цикле - классическая ошибка, нужно объединить все запросы в один через join или in(), а дальше работать с полученным массивом.
собираюсь сделать админ панель для интернет магазина.Зависит. Что вы там писали и какая у вас логика. Как универсальное решение может подойти Вояджер, он немного простоватый, но для несложной логики подойдет. В случае более-менее сложных связей писать бэк скорее всего придется самому. Как фронт популярным решением будет что-то типа LTE Admin.
Кеш именно статики, после обновление картинок уловно в public/assets в формате PNG, они упорно не отображаются даже при прямой запросе изображения в строке браузера.Кэш "статики" это чисто в вашем браузере. На другой машине все ваши картинки будут отображаться нормально при первом заходе, но так же перестанут подгружаться измененные при последующих заходах. Никакие "кэши ларавела" конечно же за это не отвечают.
Как решения прописывать каждый раз новые пути и название картинок - но не оч удобно при разработки визуала.Можете использовать версию, что-то типа
<img src="logo.png?<?=VER?>">
, естественно надо будет менять эту константу при изменении картинок, хотя это и некоторого рода костыли. Правильным решением будет переход на сборку фронтенда сборщиками, но так тоже будет работать. Перестали выводится ошибки , только 500-я , в логах такие записиСкорее всего в .енв вы поменяли окружение с дев на прод. Соответственно ошибки только логируются.
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 266240 bytes) in /var/www/lobochkin28/data/www/lobochkin.ru/laravel-blog/vendor/laravel/framework... on line 215, referer: laravel-blog.lobochkin.ru/admin/categoryСкорее всего где-то у вас бесконечный цикл, или бооольшой массив. Смотрите что у вас там происходит.
//router
...
Route::post('/add/{productId}', [CartController::class, 'addToCart'])->name('add.product.toCart');
Route::delete('/remove/{productId}', [CartController::class, 'remove'])->name('product.remove');
...
//Controller
public function remove($productId)
{
/* это вообще в мидлваре должно происходить, тут ему делать нечего, впишите роут в ауч группу...
if (!Auth::check()) {
return redirect()->route('login');
}
*/
$cart = Session::get('cart');
if (array_key_exists($productId, $cart)) {
unset($cart[$productId]);
Session::put('cart', $cart);
}
return redirect()->route('cart.index');
}
...
//HTML
<form action="{{ route('product.remove', ['productId'=>$productId]) }}" method="post">
// читать как работает хелпер route, посмотреть какой урл он выдает у вас сейчас, плакать, править...
на первом просто редиректит,Во первых - редирект куда? Во вторых, стоит заглянуть в сгенерированный хтмл и посмотреть какой там реальный урл формы. Так же при отправке посмотреть нетворк и посмотреть что и куда реально отправляется и с какими данными.
Вывода перед заголовками тоже нет, если такое есть, то laravel сразу бы ошибку выдал.Это варнинг, а не ошибка, так что вполне может игнорироваться, в зависимости от настроек.
return response($content, 200)
->withHeaders([
'Content-Type' => $type,
'X-Header-One' => 'Header Value',
'X-Header-Two' => 'Header Value',
]);
return $pdf->download($filename);
сделайте руками вывод заголовков и ечо содержимого пдф, затем ексит. Если сработает - значит респонс дополнительно обрабатывается после ретурна из контроллера... Ведь если нет никакой дополнительной обработки, то ведь можно просто сделать $model->toArray(), не?Во первых - в 90% случаев модель не достается "голой", а тянет с собой связанные объекты, например роли или аватарки или еще что-то. Они явно лишние в выдаче.
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=somefile.ext");
header("Content-Transfer-Encoding: binary");
header("Content-Type: binary/octet-stream");
readfile($filePath);
Подскажите пожалуйста как сохранить модель Doctors как авторизованного пользователя?