Laravel Octane для нового проекта
Давно хочу попробовать Octane, но всё руки не доходили. Наконец подвернулся подходящий проект, где можно провести эксперимент 😃
Смысл пакета в том, что мы запускаем процесс, который держит всё наше приложение в оперативной памяти.
Код проекта НЕ запускается заново на каждый запрос. Вместо этого он загружается в память при первом запросе и дальше работает оттуда - отвечает на остальные запросы максимально быстро.
Аналогичная история работает, например в NodeJS, когда мы на сервере тоже запускаем процесс (например express), который висит постоянно и готов обрабатывать входящие запросы.
Насколько я знаю на питоне (Django) такая же история (поправьте, если не прав). Благодаря этому приложение должно работать быстрее, потому что оно уже загружено в памяти.
Вот и Laravel через официальный пакет Octane даёт нам такую возможности - ускорить наше приложение, если нужна повышеная эффективность и скорость.
Я всё еще НЕ уверен нужно ли мне это?
Сайты на PHP и Laravel и без того работают достаточно быстро. А здесь (помимо плюсов) мы получаем некоторые неудобства:
- Дополнительная сложность при настройке сервера.
- Необходимость перезапускать этот процесс после изменения файлов.
- Неуверенность, тк нет опыта с этим расширением.
В общем пробуем. Буду держать вкурсе 👍
https://laravel.com/docs/9.x/octane
#laravel #octane
Давно хочу попробовать Octane, но всё руки не доходили. Наконец подвернулся подходящий проект, где можно провести эксперимент 😃
Смысл пакета в том, что мы запускаем процесс, который держит всё наше приложение в оперативной памяти.
Код проекта НЕ запускается заново на каждый запрос. Вместо этого он загружается в память при первом запросе и дальше работает оттуда - отвечает на остальные запросы максимально быстро.
Аналогичная история работает, например в NodeJS, когда мы на сервере тоже запускаем процесс (например express), который висит постоянно и готов обрабатывать входящие запросы.
Насколько я знаю на питоне (Django) такая же история (поправьте, если не прав). Благодаря этому приложение должно работать быстрее, потому что оно уже загружено в памяти.
Вот и Laravel через официальный пакет Octane даёт нам такую возможности - ускорить наше приложение, если нужна повышеная эффективность и скорость.
Я всё еще НЕ уверен нужно ли мне это?
Сайты на PHP и Laravel и без того работают достаточно быстро. А здесь (помимо плюсов) мы получаем некоторые неудобства:
- Дополнительная сложность при настройке сервера.
- Необходимость перезапускать этот процесс после изменения файлов.
- Неуверенность, тк нет опыта с этим расширением.
В общем пробуем. Буду держать вкурсе 👍
https://laravel.com/docs/9.x/octane
#laravel #octane
👍8🔥2
Интервалы - первый бонус от использования Octane
Используя
Например мне нужно обновлять курсы валют каждые 10 секунд. По крону этого НЕ сделать, потому что там минимальный интервал - одна минута.
На скрине пример функции, которая выполняется кажде 10 секунд - просто пишет в лог. Получается такой аналог
Просто размещаем этот код в
Продолжаем эксперимент 👍
#laravel #octane
Используя
Laravel Octaneмы можем любую запускать функцию с определённым интервалом.
Например мне нужно обновлять курсы валют каждые 10 секунд. По крону этого НЕ сделать, потому что там минимальный интервал - одна минута.
На скрине пример функции, которая выполняется кажде 10 секунд - просто пишет в лог. Получается такой аналог
setIntervalиз
JavaScript.
Просто размещаем этот код в
AppServiceProviderи радуемся результату.
Продолжаем эксперимент 👍
#laravel #octane
👍14🔥1
OneCode
Интервалы - первый бонус от использования Octane Используя Laravel Octane мы можем любую запускать функцию с определённым интервалом. Например мне нужно обновлять курсы валют каждые 10 секунд. По крону этого НЕ сделать, потому что там минимальный интервал…
Дополнение - интервалы у октан штука хорошая, но надо понимать ньюансы:
Например, если у тебя несколько серверов приложения (масштабирование), на которых работает Octane, тогда эта функция с интервалом будет выполняться на каждом сервере. То есть на 3 серверах функция будет запускаться 3 раза каждые 10 секунд - скорее всего это НЕ то, чего мы хотим.
У меня планируется всего один сервер, поэтому мне подходит такой вариант. В будущем, если понадобится, можно будет перенести выполнение функции в другое место - главное НЕ размещать логику (код функции) прямо здесь в провайдере. Лучше инкапсулировать (разместить) её, например в консольную команду (artisan) и вызывать эту команду здесь. Или в любом другом месте.
На будущее есть еще пакет
Не совсем понятно как перезапускать этот процесс из пакета - встроенной команды для этого там нет. Но думаю можно что-то придумать. Или просто перезапускать его каждую минуту - такая возможность есть.
В общем тема интересная. Не часто, но иногда надо вызывать ккакую-то функцию автоматически с интервалом в несколько секунд. Если в будущем понадобится - помни, что варианты всегда есть 😃
https://github.com/spatie/laravel-short-schedule
#laravel #spatie #interval #tick #schedule
Например, если у тебя несколько серверов приложения (масштабирование), на которых работает Octane, тогда эта функция с интервалом будет выполняться на каждом сервере. То есть на 3 серверах функция будет запускаться 3 раза каждые 10 секунд - скорее всего это НЕ то, чего мы хотим.
У меня планируется всего один сервер, поэтому мне подходит такой вариант. В будущем, если понадобится, можно будет перенести выполнение функции в другое место - главное НЕ размещать логику (код функции) прямо здесь в провайдере. Лучше инкапсулировать (разместить) её, например в консольную команду (artisan) и вызывать эту команду здесь. Или в любом другом месте.
На будущее есть еще пакет
spatie/laravel-short-schedule, который тоже решает задачу вызова функции с коротким интервалом. Пакет предоставляет нам интерфейс, аналогичный task scheduling из ларавел - будет привычно.
Не совсем понятно как перезапускать этот процесс из пакета - встроенной команды для этого там нет. Но думаю можно что-то придумать. Или просто перезапускать его каждую минуту - такая возможность есть.
В общем тема интересная. Не часто, но иногда надо вызывать ккакую-то функцию автоматически с интервалом в несколько секунд. Если в будущем понадобится - помни, что варианты всегда есть 😃
https://github.com/spatie/laravel-short-schedule
#laravel #spatie #interval #tick #schedule
👍5
Хелперы для вывода даты и времени
Часто на проекте нужно выводить дату или время в определённом формате.
Так же в мультиязычных проектах формат даты и времени может отличаться в зависимости от языка сайта.
Если в будущем придёт задача изменить формат, то придётся:
- Искать все места в проекте.
- Менять вручную и тестировать.
- Надеяться, что ничего не пропустил.
Поэтому я сразу помещаю логику форматирования даты/времени в функции-хелперы (на скрине).
Вывожу дату/время везде через эти функции и потом, при необходимости, могу менять формат в любой момент в одном месте. Или использовать там условия, чтобы формат зависел от языка сайта.
Пример использования:
Планирую создать отдельный telegram-канал с такими полезными советами, примерами моего кода, короткими практическими видео и лайфхаками из моего личного опыта.
Лайк?
#laravel #tip #date #time #helpers
Часто на проекте нужно выводить дату или время в определённом формате.
Так же в мультиязычных проектах формат даты и времени может отличаться в зависимости от языка сайта.
Если в будущем придёт задача изменить формат, то придётся:
- Искать все места в проекте.
- Менять вручную и тестировать.
- Надеяться, что ничего не пропустил.
Поэтому я сразу помещаю логику форматирования даты/времени в функции-хелперы (на скрине).
Вывожу дату/время везде через эти функции и потом, при необходимости, могу менять формат в любой момент в одном месте. Или использовать там условия, чтобы формат зависел от языка сайта.
Пример использования:
{{ __datetime($order->created_at) }}
{{ __date($order->created_at) }}
{{ __time($order->created_at) }}
Планирую создать отдельный telegram-канал с такими полезными советами, примерами моего кода, короткими практическими видео и лайфхаками из моего личного опыта.
Лайк?
#laravel #tip #date #time #helpers
👍34
Оконные функции PostgreSQL
Статья из серии "Что читаю и вам желаю"
Полезная статья про то, как можно посчитать агрегаты (сумму, кол-во, среднее значение и тд) построчно с помощью оконных функций.
https://habr.com/ru/post/268983/
#sql #postgresql #postgres #pgsql
Статья из серии "Что читаю и вам желаю"
Полезная статья про то, как можно посчитать агрегаты (сумму, кол-во, среднее значение и тд) построчно с помощью оконных функций.
https://habr.com/ru/post/268983/
#sql #postgresql #postgres #pgsql
👍4
Торговля без комиссии (Bitcoin)
Криптовалютная биржа Binance отменила комиссии на торговлю биткоином.
Думаю на выходных накидать робота для автоматической торговли 🤔
https://www.binance.com/en/support/announcement/10435147c55d4a40b64fcbf43cb46329
Нужно больше золота 😃
#crypto #binance #bitcion #robot
Криптовалютная биржа Binance отменила комиссии на торговлю биткоином.
Думаю на выходных накидать робота для автоматической торговли 🤔
https://www.binance.com/en/support/announcement/10435147c55d4a40b64fcbf43cb46329
Нужно больше золота 😃
#crypto #binance #bitcion #robot
🔥2
Лайфхак для TinkerWell
Ни раз уже писал про тинкервел, который, позволяет писать код на PHP внутри нашего приложения на Laravel, сразу выполнять этот код, тут же видеть результат и всё это можно по SSH на сервере - реально бомба!
Недавно с коллегами случайно обнаружили прикольную фишку. Суть в том, что если выделить кусок кода и нажать Play (запустить), то выполнится именно этот выделенный код.
На скрине я написал скрипт для обновления заявок на доставку. Но прежде, чем его запустить я хочу посмотреть сколько их там.
Для этого выделил нужный кусок кода, запустил и увидел. До цикла foreach дело не дошло - реально удобная тема.
https://tinkerwell.app
#tools #tinker #laravel
Ни раз уже писал про тинкервел, который, позволяет писать код на PHP внутри нашего приложения на Laravel, сразу выполнять этот код, тут же видеть результат и всё это можно по SSH на сервере - реально бомба!
Недавно с коллегами случайно обнаружили прикольную фишку. Суть в том, что если выделить кусок кода и нажать Play (запустить), то выполнится именно этот выделенный код.
На скрине я написал скрипт для обновления заявок на доставку. Но прежде, чем его запустить я хочу посмотреть сколько их там.
Для этого выделил нужный кусок кода, запустил и увидел. До цикла foreach дело не дошло - реально удобная тема.
https://tinkerwell.app
#tools #tinker #laravel
👍3
Илья Климов про Vue (и React)
Посмотрел интервью разработчика из GitLab о фронтенде в целом и Vue в частности - понравилось.
https://youtu.be/pSpfml86b7Q
#vue #js
Посмотрел интервью разработчика из GitLab о фронтенде в целом и Vue в частности - понравилось.
https://youtu.be/pSpfml86b7Q
#vue #js
🔥6💩6👍2
От подмастерья к ремесленнику
Книга Тейлора Отвела - разработчика Laravel.
Написана почти 10 лет назад - 2013 год, но уверен каждый найдёт для себя что-то полезное.
Я прочитал уже половину, до конца недели закончу. Можно читать просто по 1 главе в день.
Читать можно через Яндекс.Переводчик - там можно переводить PDF-файлы.
Книга в следующем посте 👇
#book #laravel #taylor
Книга Тейлора Отвела - разработчика Laravel.
Написана почти 10 лет назад - 2013 год, но уверен каждый найдёт для себя что-то полезное.
Я прочитал уже половину, до конца недели закончу. Можно читать просто по 1 главе в день.
Читать можно через Яндекс.Переводчик - там можно переводить PDF-файлы.
Книга в следующем посте 👇
#book #laravel #taylor
👍3
Перенос строки
Бывает нужно вывести информацию в удобном виде с помощью переноса строки.
Для этого можно использовать симол переноса строки
Важно: двойные кавычки обязательны!
Однако есть другой способ - использовать константу
Она автоматически выведет тот символ переноса строки, который нужен для текущей платформы (linux/windows).
На скрине оба примера.
#php #eol
Бывает нужно вывести информацию в удобном виде с помощью переноса строки.
Для этого можно использовать симол переноса строки
"\n"(или
"\r\n"для windows).
Важно: двойные кавычки обязательны!
Однако есть другой способ - использовать константу
PHP_EOL, встроенную в PHP.
Она автоматически выведет тот символ переноса строки, который нужен для текущей платформы (linux/windows).
На скрине оба примера.
#php #eol
👍12