Для тех кто использует Laravel Octane в связке с FrankenPHP
Laravel Octane 2.9 и ниже не умеет работать с FrankenPHP 1.5 - при запуске будет возникать ошибка:
Временный фикс:
https://github.com/laravel/octane/issues/1020
Laravel Octane 2.9 и ниже не умеет работать с FrankenPHP 1.5 - при запуске будет возникать ошибка:
Local: http://127.0.0.1:9000
Press Ctrl+C to stop the server
WARN unable to determine directory for user configuration; falling back to current directory.
WARN HTTP/2 skipped because it requires TLS.
WARN HTTP/3 skipped because it requires TLS.
WARN $HOME environment variable is empty - please fix; some assets might be stored in ./caddy.
Временный фикс:
-php artisan octane:install --server=frankenphp -q
+curl https://github.com/dunglas/frankenphp/releases/download/v1.4.4/frankenphp-linux-x86_64 -o frankenphp
https://github.com/laravel/octane/issues/1020
GitHub
$HOME environment variable is empty · Issue #1020 · laravel/octane
Octane Version 2.9.0 Laravel Version 12.8.1 PHP Version 8.4.6 What server type are you using? FrankenPHP Server Version 1.5.0 Database Driver & Version Postgres 17 Description When downloading ...
👍3
50 миллионов скачиваний — это наш общий успех!
Друзья, хочу поделиться с вами замечательной новостью! Суммарно по всем моим проектам было совершено 50 миллионов скачиваний! Это невероятный результат, и я очень рад, что мои программные продукты находят такой отклик у пользователей.
Хочу выразить огромную благодарность каждому, кто использует мои разработки. Ваше доверие и поддержка вдохновляют меня на новые свершения и помогают двигаться вперёд.
Спасибо, что вы со мной! Вместе мы сможем достичь ещё больших высот!
https://dragon-code.pro
Друзья, хочу поделиться с вами замечательной новостью! Суммарно по всем моим проектам было совершено 50 миллионов скачиваний! Это невероятный результат, и я очень рад, что мои программные продукты находят такой отклик у пользователей.
Хочу выразить огромную благодарность каждому, кто использует мои разработки. Ваше доверие и поддержка вдохновляют меня на новые свершения и помогают двигаться вперёд.
Спасибо, что вы со мной! Вместе мы сможем достичь ещё больших высот!
https://dragon-code.pro
👏12👍10🔥5❤2🫡1
Три способа построения запроса к релейшенам в Laravel
Результаты бенчмарка на 100'000 итераций с вызовом метода
https://laravel.com/docs/12.x/eloquent-relationships#querying-belongs-to-relationships
// Вариант 1
Inventory::query()
->where('city_id', $city->id)
->where('product_id', $product->id)
->where('store_id', $store->id)
->get();
// Вариант 2
Inventory::query()
->whereCityId($city->id)
->whereProductId($product->id)
->whereStoreId($store->id)
->get();
// Вариант 3
Inventory::query()
->whereBelongsTo($city)
->whereBelongsTo($product)
->whereBelongsTo($store)
->get();
Результаты бенчмарка на 100'000 итераций с вызовом метода
toRawSql()
вместо get()
из примера выше:------- -------------------- -------------------- ---------------------
# where(column_id) whereColumnId whereBelongsTo
------- -------------------- -------------------- ---------------------
min 0.061 ms - 0 bytes 0.067 ms - 0 bytes 0.202 ms - 0 bytes
max 2.509 ms - 2.00 MB 1.155 ms - 2.00 MB 25.029 ms - 2.00 MB
avg 0.087 ms - 0 bytes 0.096 ms - 0 bytes 0.28 ms - 0 bytes
total 23285.103 ms 24046.848 ms 42309.312 ms
------- -------------------- -------------------- ---------------------
Order - 1 - - 2 - - 3 -
------- -------------------- -------------------- ---------------------
https://laravel.com/docs/12.x/eloquent-relationships#querying-belongs-to-relationships
Laravel
Eloquent: Relationships - Laravel 12.x - The PHP Framework For Web Artisans
Laravel is a PHP web application framework with expressive, elegant syntax. We’ve already laid the foundation — freeing you to create without sweating the small things.
❤2
🚀 Улучшенное взаимодействие с конфигами в Laravel
1. Создайте файл
2. В корне проекта создайте файл
Теперь по хоткею Laravel Idea можно легко создавать классы для конфигов.
1. Создайте файл
stubs/config_class.stub
со следующим содержимым:<?php
declare(strict_types=1);
namespace DummyNamespace;
class DummyClass
{
public static function hasDebug(): bool
{
return config('app.debug');
}
}
2. В корне проекта создайте файл
ide.json
либо добавьте объект генерации если файл уже существует:{
"$schema": "https://laravel-ide.com/schema/laravel-ide-v2.json",
"codeGenerations": [
{
"id": "app.config.class",
"name": "Create Config Class",
"classSuffix": "Config",
"regex": ".+",
"files": [
{
"appNamespace": "Config",
"name": "${INPUT_CLASS|replace: ,_|className|upperCamelCase}.php",
"template": {
"type": "stub",
"path": "stubs/config_class.stub",
"parameters": {
"DummyNamespace": "${INPUT_FQN|namespace}",
"DummyClass": "${INPUT_CLASS|replace: ,_|className|upperCamelCase}"
}
}
}
]
}
]
}
Теперь по хоткею Laravel Idea можно легко создавать классы для конфигов.
👍4
Наглядное представление отличий при использовании дефолтных значений, назначаемых колонкам БД от назначаемых внутри Laravel модели.
vs
Schema::create('foo', function (Blueprint $table) {
$table->boolean('is_active')->default(false);
});
return Foo::create()->is_active; // null
return Foo::first()->is_active; // false
vs
Schema::create('foo', function (Blueprint $table) {
$table->boolean('is_active')->default(false);
});
class Foo extends Model
{
protected $attributes = [
'is_active' => true,
];
}
return Foo::create()->is_active; // true
return Foo::first()->is_active; // true
👍4
Hawk - российский трекер ошибок
Может работать с Sentry SDK
https://hawk.so
https://hawk-tracker.ru/pricing.pdf
Может работать с Sentry SDK
https://hawk.so
https://hawk-tracker.ru/pricing.pdf
👍3🔥2
Удобный способ выгрузки приложения из памяти без открытия окна диспетчера задач в Windows 11
Для активации нужно зайти в "Параметры" - "Система" - "Для разработчиков" и активировать опцию "Завершить задачу".
После этого появится новый пункт меню при клике правой кнопкой мыши по иконке программы.
Для активации нужно зайти в "Параметры" - "Система" - "Для разработчиков" и активировать опцию "Завершить задачу".
После этого появится новый пункт меню при клике правой кнопкой мыши по иконке программы.
❤3👍2
🧙♂️ Притча о свитке и кузнеце
В одном городе был мудрец, который создавал подробнейшие свитки с описанием дел. Он выписывал каждую мелочь: и где стоит камень, и как дует ветер, и в какой момент лучше всего начать путь. Свитки были ясны, как дневной свет.
Но вот кузнецы, которым предназначались эти свитки, часто бросали лишь взгляд на начало, хватали молот и бежали работать. А потом возвращались с вопросами:
— А где найти камень?
— А что за ветер сбил нас с пути?
Мудрец, устав от повторов, однажды сказал:
— Кто не читает свиток, тот рискует биться лбом об тот же камень, про который я уже трижды писал.
С тех пор в мастерской повесили табличку:
В одном городе был мудрец, который создавал подробнейшие свитки с описанием дел. Он выписывал каждую мелочь: и где стоит камень, и как дует ветер, и в какой момент лучше всего начать путь. Свитки были ясны, как дневной свет.
Но вот кузнецы, которым предназначались эти свитки, часто бросали лишь взгляд на начало, хватали молот и бежали работать. А потом возвращались с вопросами:
— А где найти камень?
— А что за ветер сбил нас с пути?
Мудрец, устав от повторов, однажды сказал:
— Кто не читает свиток, тот рискует биться лбом об тот же камень, про который я уже трижды писал.
С тех пор в мастерской повесили табличку:
«Прежде чем ковать — прочти весь свиток. Возможно, он убережёт тебя от лишней боли и спасёт чьё-то терпение».
👍2
Позавчера Тейлор запустил новый сервис - Laravel Nightwatch.
Это сервис мониторинга работы приложения.
Краткий отзыв по истечении двух дней его использования вместе с анти-спам ботом @KvedeBot:
- Выдаёт общую информацию (есть или нет проблемы), в детали не вдаётся;
- Показывает список реально вызываемых консольных команд. Так, например, я узнал о команде
- Можно увидеть запросы к БД, но без самих данных - только конструкт;
- От внешних запросов виден лишь адрес без тела запроса;
- По общей статистике использования видим что из 200к бесплатных эвентов за двое суток приложение сожрало 173'596 (87%), из которых 49'009 эвентов - работа с кэшем. Да, эти
Таким образом, пришёл к выводу, что это MVP продукта и, с большой долей вероятности, он действительно будет хорош, но - потом. В текущем исполнении Nightwatch, скажем так, публикует хлам из подноготной фреймворка. Моё мнение, он делает это для того, чтобы побыстрее сожрать бесплатные лимиты дабы люди оформляли подписку.
В целом, сервис прикольный, но на полном серьёзе на сервере его использовать ну такое.
Это сервис мониторинга работы приложения.
Краткий отзыв по истечении двух дней его использования вместе с анти-спам ботом @KvedeBot:
- Выдаёт общую информацию (есть или нет проблемы), в детали не вдаётся;
- Показывает список реально вызываемых консольных команд. Так, например, я узнал о команде
php artisan schedule:finish
, которая была вызвана 2'120 раз за это время... И да, эта команда также лимиты жрёт;- Можно увидеть запросы к БД, но без самих данных - только конструкт;
- От внешних запросов виден лишь адрес без тела запроса;
- По общей статистике использования видим что из 200к бесплатных эвентов за двое суток приложение сожрало 173'596 (87%), из которых 49'009 эвентов - работа с кэшем. Да, эти
cache hit
, read
, write
и т.д. тоже считаются.Таким образом, пришёл к выводу, что это MVP продукта и, с большой долей вероятности, он действительно будет хорош, но - потом. В текущем исполнении Nightwatch, скажем так, публикует хлам из подноготной фреймворка. Моё мнение, он делает это для того, чтобы побыстрее сожрать бесплатные лимиты дабы люди оформляли подписку.
В целом, сервис прикольный, но на полном серьёзе на сервере его использовать ну такое.
❤5👍3✍1