Nginx Unit с Laravel и PHP
Nginx Unit - это веб-сервер, который облегчает прямое взаимодействие с вашим кодом, позволяя передавать HTTP-запросы вашему коду так, чтобы он их понимал. Он поддерживает различные языки программирования и имеет отдельные модули для каждого из них. Чтобы использовать его с PHP, вы можете установить PHP, используя репозиторий ppa:ondrej/php. Важно установить php8.2-dev и php8.2-embed, но без php-fpm.
Установка Nginx Unit выполняется в соответствии с его документацией. Для работы с вашей версией PHP вам нужно вручную пересобрать PHP-модуль для Unit. После установки и настройки Unit позволяет запускать ваше приложение без PHP-FPM, что упрощает его контейнеризацию. Похоже, что он эффективен и устойчив, успешно обрабатывая большие объемы запросов.
Тем не менее, существуют некоторые компромиссы. Изменение версий PHP требует повторной компиляции PHP-модуля Unit, что затрудняет одновременный запуск нескольких версий PHP. Кроме того, возможно потребуется дополнительный HTTP-слой перед Unit для обработки определенных конфигураций, таких как сжатие gzip и защита определенных маршрутов.
Nginx Unit - это веб-сервер, который облегчает прямое взаимодействие с вашим кодом, позволяя передавать HTTP-запросы вашему коду так, чтобы он их понимал. Он поддерживает различные языки программирования и имеет отдельные модули для каждого из них. Чтобы использовать его с PHP, вы можете установить PHP, используя репозиторий ppa:ondrej/php. Важно установить php8.2-dev и php8.2-embed, но без php-fpm.
Установка Nginx Unit выполняется в соответствии с его документацией. Для работы с вашей версией PHP вам нужно вручную пересобрать PHP-модуль для Unit. После установки и настройки Unit позволяет запускать ваше приложение без PHP-FPM, что упрощает его контейнеризацию. Похоже, что он эффективен и устойчив, успешно обрабатывая большие объемы запросов.
Тем не менее, существуют некоторые компромиссы. Изменение версий PHP требует повторной компиляции PHP-модуля Unit, что затрудняет одновременный запуск нескольких версий PHP. Кроме того, возможно потребуется дополнительный HTTP-слой перед Unit для обработки определенных конфигураций, таких как сжатие gzip и защита определенных маршрутов.
Fideloper
Nginx Unit with Laravel and PHP
I came across Nginx Unit recently. Turns out, it's really cool! We can get rid of PHP-FPM, and run our apps more efficient. Let's see how, and go over the pros and cons.
❤5🌚3👍1
Почему отслеживание ошибок имеет решающее значение для вашего приложения
Ошибка в приложении - неизбежное явление. Однако, когда приложение уже запущено, и не только вы вызываете ошибки, самые важные из них могут остаться незамеченными. Здесь на помощь приходят программы отслеживания ошибок, такие как Flare.
Почему это важно? Когда происходит ошибка в продакшене, вы узнаете о ней из журналов или сообщений пользователей. Зачем тогда нужен еще один инструмент? Во-первых, вы хотите знать об ошибках как можно скорее: что произошло, почему это произошло и нужно ли это немедленно исправить? Чтобы ответить на эти вопросы, нужно получить информацию о произошедшей ошибке в первые минуты после возникновения. Не стоит ждать, пока пользователи сообщат о проблеме, потому что, скорее всего, они этого не сделают.
Это важно, потому что вы хотите знать о своих ошибках как можно скорее, чтобы исправить их и связаться с пользователем до того, как он обратится к вам. Вот почему нужны bug trackers. Они уведомляют вас об ошибках, независимо от того, кто их вызвал, и предоставляют подробные сведения, необходимые для их устранения. Flare - это один из таких bug trackers, предназначенный специально для Laravel.
Flare предоставляет обширные сведения для отладки проблем. Он не только перечисляет все ошибки, вызванные всеми пользователями, но и предоставляет необходимые инсайты для устранения проблем. Кроме отслеживания ошибок, Flare имеет отличную интеграцию с GitHub, обширные настройки уведомлений и возможности организации проектов и команд.
Для начала работы с Flare в проекте Laravel нужно всего лишь выполнить три шага: установить Ignition, клиент Flare; настроить API-ключ; настроить Laravel для отправки ошибок в Flare. После этого вы можете отслеживать ошибки вашего приложения и получать уведомления о них в реальном времени.
Flare также предлагает решения для ряда часто возникающих ошибок и включает интеграцию с GitHub, автоматическое определение зарегистрированных пользователей, расширенные настройки уведомлений и многое другое.
Таким образом, Flare облегчает отслеживание ошибок в ваших приложениях и позволяет вам быстро реагировать на проблемы, улучшая опыт пользователей и экономя вам время и ресурсы.
Ошибка в приложении - неизбежное явление. Однако, когда приложение уже запущено, и не только вы вызываете ошибки, самые важные из них могут остаться незамеченными. Здесь на помощь приходят программы отслеживания ошибок, такие как Flare.
Почему это важно? Когда происходит ошибка в продакшене, вы узнаете о ней из журналов или сообщений пользователей. Зачем тогда нужен еще один инструмент? Во-первых, вы хотите знать об ошибках как можно скорее: что произошло, почему это произошло и нужно ли это немедленно исправить? Чтобы ответить на эти вопросы, нужно получить информацию о произошедшей ошибке в первые минуты после возникновения. Не стоит ждать, пока пользователи сообщат о проблеме, потому что, скорее всего, они этого не сделают.
Это важно, потому что вы хотите знать о своих ошибках как можно скорее, чтобы исправить их и связаться с пользователем до того, как он обратится к вам. Вот почему нужны bug trackers. Они уведомляют вас об ошибках, независимо от того, кто их вызвал, и предоставляют подробные сведения, необходимые для их устранения. Flare - это один из таких bug trackers, предназначенный специально для Laravel.
Flare предоставляет обширные сведения для отладки проблем. Он не только перечисляет все ошибки, вызванные всеми пользователями, но и предоставляет необходимые инсайты для устранения проблем. Кроме отслеживания ошибок, Flare имеет отличную интеграцию с GitHub, обширные настройки уведомлений и возможности организации проектов и команд.
Для начала работы с Flare в проекте Laravel нужно всего лишь выполнить три шага: установить Ignition, клиент Flare; настроить API-ключ; настроить Laravel для отправки ошибок в Flare. После этого вы можете отслеживать ошибки вашего приложения и получать уведомления о них в реальном времени.
Flare также предлагает решения для ряда часто возникающих ошибок и включает интеграцию с GitHub, автоматическое определение зарегистрированных пользователей, расширенные настройки уведомлений и многое другое.
Таким образом, Flare облегчает отслеживание ошибок в ваших приложениях и позволяет вам быстро реагировать на проблемы, улучшая опыт пользователей и экономя вам время и ресурсы.
👍5🥱5
Как оптимизировать производительность проекта Symfony
Статья рассказывает о том, как оптимизировать производительность проектов, созданных с использованием Symfony.
Автор предоставляет шаги и рекомендации для улучшения производительности приложений, включая установку необходимых компонентов, ограничение числа локалей, оптимизацию контейнера сервисов, использование кэширования и профилирования приложения для выявления узких мест в работе.
Также статья обсуждает продвинутые техники, такие как настройка кэша путей PHP и использование предварительной загрузки классов с помощью OPcache. Автор подчеркивает важность оптимизации запросов к базе данных и подчеркивает, что оптимизация производительности является постоянным процессом, требующим внимания к новым технологиям и методам.
Статья рассказывает о том, как оптимизировать производительность проектов, созданных с использованием Symfony.
Автор предоставляет шаги и рекомендации для улучшения производительности приложений, включая установку необходимых компонентов, ограничение числа локалей, оптимизацию контейнера сервисов, использование кэширования и профилирования приложения для выявления узких мест в работе.
Также статья обсуждает продвинутые техники, такие как настройка кэша путей PHP и использование предварительной загрузки классов с помощью OPcache. Автор подчеркивает важность оптимизации запросов к базе данных и подчеркивает, что оптимизация производительности является постоянным процессом, требующим внимания к новым технологиям и методам.
DEV Community
How to optimize Symfony project performance 👨💻
Looking for that extra boost in your Symfony projects? Symfony framework is ideal for building...
👍4
Forwarded from PHP jobs — вакансии по PHP, Symfony, Laravel
#дайджест #phpdevjob
Вакансии недели для Москвы 👨🏻🏫
PHP разработчик в BeGroup
Москва. Маркетплейс нативной рекламы в социальных сетях.
Подробнее
PHP разработчик в Нескучные Финансы
Москва. Компания по аутсорсингу управленческого учета.
Подробнее
Программист в ЧОП Центавр
Москва. Частное охранное предприятие.
Подробнее
PHP full stack разработчик в AgencyxX
Москва. Работе со средними и крупными ecommerce проектами.
Подробнее
Junior PHP-разработчик в Roistat
Москва. Разработка сервиса сквозной аналитики и комплексного управления интернет-маркетингом.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
Вакансии недели для Москвы 👨🏻🏫
PHP разработчик в BeGroup
Москва. Маркетплейс нативной рекламы в социальных сетях.
Подробнее
PHP разработчик в Нескучные Финансы
Москва. Компания по аутсорсингу управленческого учета.
Подробнее
Программист в ЧОП Центавр
Москва. Частное охранное предприятие.
Подробнее
PHP full stack разработчик в AgencyxX
Москва. Работе со средними и крупными ecommerce проектами.
Подробнее
Junior PHP-разработчик в Roistat
Москва. Разработка сервиса сквозной аналитики и комплексного управления интернет-маркетингом.
Подробнее
Понравились вакансии?
👍 — да
👎 — нет
hh.ru
Вакансия PHP разработчик (Laravel) в Москве, работа в компании BeGroup / BeSeed (вакансия в архиве c 24 октября 2023)
Зарплата: не указана. Москва. Требуемый опыт: 1–3 года. Полная занятость. Дата публикации: 22.10.2023.
🥱5❤3👍2
На каком фреймворке сейчас пишите
Anonymous Poll
55%
Laravel
32%
Symfony
14%
Yii
3%
CodeIgniter
1%
Cake
2%
Zend
12%
Другой(в комментарии)
⚡️Помогите «Библиотеке программиста» начать публиковать сторис
Каналы могут публиковать сторис в телеграм — правда, для этого им нужно набрать достаточно голосов пользователей. А голосовать могут только те, у кого есть премиум.
Что мы будем публиковать в сторис?
🧠Логические задачки — чтобы тренировать мозги
📰Только важные новости — оперативно
👨🏫Истории компаний, инструментов и софта по особым поводам (например, историю Linux в честь его дня создания)
❗Анонсы наших вебинаров и самых интересных статей
Если вы хотите увидеть наши сторисы в «Библиотеке программиста», вот что нужно сделать:
1️⃣ обновить телеграм на телефоне
2️⃣ перейти по ссылке ➡️ https://t.iss.one/proglibrary?boost
3️⃣ нажать кнопку «голосовать»
Каналы могут публиковать сторис в телеграм — правда, для этого им нужно набрать достаточно голосов пользователей. А голосовать могут только те, у кого есть премиум.
Что мы будем публиковать в сторис?
🧠Логические задачки — чтобы тренировать мозги
📰Только важные новости — оперативно
👨🏫Истории компаний, инструментов и софта по особым поводам (например, историю Linux в честь его дня создания)
❗Анонсы наших вебинаров и самых интересных статей
Если вы хотите увидеть наши сторисы в «Библиотеке программиста», вот что нужно сделать:
1️⃣ обновить телеграм на телефоне
2️⃣ перейти по ссылке ➡️ https://t.iss.one/proglibrary?boost
3️⃣ нажать кнопку «голосовать»
🌚3👍2
Понимание сериализации в PHP
Сериализация (или serialization) - это процесс преобразования данных в формат, который можно сохранить или передать. В PHP сериализация выполняется с использованием специального формата, который представляет различные типы данных, такие как булевы значения, null, целые числа, числа с плавающей запятой, строки, массивы и объекты.
Булевы значения сериализуются так:
✅"b:0;" для false и "b:1;" для true.
✅Null представляется как "N;".
✅Целые числа сериализуются как "i:значение;",
✅числа с плавающей запятой как "d:значение;".
✅Сериализованные строки содержат информацию о длине строки и выглядят так: "s:[длина]:"[значение]"".
Массивы сериализуются с использованием "a:[количество элементов]:{...элементы}", где каждый элемент представлен в формате "ключ;значение;". Объекты сериализуются с использованием "O:[длина класса]:"[класс]":[количество свойств]:{...свойства}". Сериализация может также обрабатывать защищенные и приватные свойства объектов, добавляя специальные символы к их именам.
Этот процесс позволяет сохранять данные в формате, который можно легко передавать или хранить, и восстанавливать их обратно в их первоначальное состояние.
Сериализация (или serialization) - это процесс преобразования данных в формат, который можно сохранить или передать. В PHP сериализация выполняется с использованием специального формата, который представляет различные типы данных, такие как булевы значения, null, целые числа, числа с плавающей запятой, строки, массивы и объекты.
Булевы значения сериализуются так:
✅"b:0;" для false и "b:1;" для true.
✅Null представляется как "N;".
✅Целые числа сериализуются как "i:значение;",
✅числа с плавающей запятой как "d:значение;".
✅Сериализованные строки содержат информацию о длине строки и выглядят так: "s:[длина]:"[значение]"".
Массивы сериализуются с использованием "a:[количество элементов]:{...элементы}", где каждый элемент представлен в формате "ключ;значение;". Объекты сериализуются с использованием "O:[длина класса]:"[класс]":[количество свойств]:{...свойства}". Сериализация может также обрабатывать защищенные и приватные свойства объектов, добавляя специальные символы к их именам.
Этот процесс позволяет сохранять данные в формате, который можно легко передавать или хранить, и восстанавливать их обратно в их первоначальное состояние.
ryangjchandler.co.uk
Understanding Serialisation in PHP
Exploring software development with PHP, JavaScript, Rust, and beyond.
👍23
Что такое OWASP?
OWASP - это акроним, расшифровывающийся как Open Web Application Security Project.
OWASP - это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.
В рамках OWASP разработаны множество проектов, включающих в себя руководства по безопасности, топ-10 уязвимостей веб-приложений, инструменты для сканирования и тестирования безопасности, образцы кода и многое другое.
Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.
#вопросы_с_собеседований
OWASP - это акроним, расшифровывающийся как Open Web Application Security Project.
OWASP - это некоммерческая организация, которая занимается исследованием и обеспечением безопасности веб-приложений. Она обладает обширным контентом, включающим методологии, инструменты, стандарты и руководства по обеспечению безопасности веб-приложений.
В рамках OWASP разработаны множество проектов, включающих в себя руководства по безопасности, топ-10 уязвимостей веб-приложений, инструменты для сканирования и тестирования безопасности, образцы кода и многое другое.
Знание OWASP и умение применять его рекомендации является важным для php-разработчика, так как помогает защитить веб-приложения от распространенных уязвимостей, таких как инъекции SQL, межсайтовый скриптинг (XSS), утечка конфиденциальной информации и другие.
#вопросы_с_собеседований
👍12❤1
Многочисленные варианты использования оператора многоточия "..." в PHP.
Здесь рассмотрены различные варианты использования оператора многоточия (или оператора "остального") в PHP, который широко используется в различных контекстах:
1️⃣Вариадические функции и методы: Оператор многоточия позволяет определять функции и методы, которые могут принимать переменное количество аргументов.
2️⃣Распаковка массива: Оператор многоточия может распаковывать массив значений и передавать их как аргументы функции или методу
3️⃣Объединение вариативных массивов: Оператор многоточия используется для объединения нескольких массивов в один
4️⃣Первоклассные вызовы: В PHP 8.1 и выше, оператор многоточия позволяет передавать вызываемый объект (например, функцию или метод) как замыкание в другие функции.
Здесь рассмотрены различные варианты использования оператора многоточия (или оператора "остального") в PHP, который широко используется в различных контекстах:
1️⃣Вариадические функции и методы: Оператор многоточия позволяет определять функции и методы, которые могут принимать переменное количество аргументов.
2️⃣Распаковка массива: Оператор многоточия может распаковывать массив значений и передавать их как аргументы функции или методу
3️⃣Объединение вариативных массивов: Оператор многоточия используется для объединения нескольких массивов в один
4️⃣Первоклассные вызовы: В PHP 8.1 и выше, оператор многоточия позволяет передавать вызываемый объект (например, функцию или метод) как замыкание в другие функции.
Amit Merchant - A blog on PHP, JavaScript, and more
The many uses of “…” ellipsis operator in PHP
With the evolution of PHP to its modern version, the one operator that has been used thoroughly across various places is the ellipsis operator (...).
👍9
Загрузка ассоциаций по запросу в Symfony
В данной статье рассматривается важный аспект работы с Doctrine в Symfony - загрузка связанных сущностей по запросу. Обычно Doctrine использует отложенную загрузку (Lazy Load), что может вызвать множество запросов к базе данных при доступе к связанным данным.
Автор представляет задачу: реализовать эндпоинт для получения книг с возможностью динамической загрузки связанных сущностей по запросу. Предложено два решения:
🔎Первое решение: Используется Doctrine с параметром EAGER для жадной загрузки связанных сущностей. Однако это приводит к проблеме лишних JOIN-ов и не позволяет загружать ассоциации по запросу.
🔎Второе решение: Вдохновленное концепцией "with" в Laravel, представлена альтернативная реализация с использованием Symfony pipeline. Загрузка связанных сущностей становится более гибкой и позволяет загружать ассоциации по запросу, обрабатывая их динамически в пайплайне.
В данной статье рассматривается важный аспект работы с Doctrine в Symfony - загрузка связанных сущностей по запросу. Обычно Doctrine использует отложенную загрузку (Lazy Load), что может вызвать множество запросов к базе данных при доступе к связанным данным.
Автор представляет задачу: реализовать эндпоинт для получения книг с возможностью динамической загрузки связанных сущностей по запросу. Предложено два решения:
🔎Первое решение: Используется Doctrine с параметром EAGER для жадной загрузки связанных сущностей. Однако это приводит к проблеме лишних JOIN-ов и не позволяет загружать ассоциации по запросу.
🔎Второе решение: Вдохновленное концепцией "with" в Laravel, представлена альтернативная реализация с использованием Symfony pipeline. Загрузка связанных сущностей становится более гибкой и позволяет загружать ассоциации по запросу, обрабатывая их динамически в пайплайне.
Хабр
Загрузка ассоциаций по запросу в Symfony
Всех приветствую! Стандартно Doctrine загружает сущности отложено (Lazy load). Это означает, что данные взаимосвязей фактически не загружаются до тех пор, пока не будет явный вызов свойства....
👍6❤1🌚1
Сколько лет опыта по вашему должен иметь мидл?
🥱6👍3
EnumConcern
Это пакет, предназначенный для улучшения использования возможностей Enum с помощью набора удобных методов. Этот пакет включает файл Trait, который позволяет легко обрабатывать Enum.
Это пакет, предназначенный для улучшения использования возможностей Enum с помощью набора удобных методов. Этот пакет включает файл Trait, который позволяет легко обрабатывать Enum.
GitHub
GitHub - emreyarligan/enum-concern: A PHP package for effortless Enumeration handling with Laravel Collections 📦 ✨
A PHP package for effortless Enumeration handling with Laravel Collections 📦 ✨ - emreyarligan/enum-concern
🥱9👍4🌚2❤1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
Подборка лучших статей «Библиотеки программиста» за сентябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
📕 ТОП-9 книг по языку программирования Go в 2023 году: от новичка до профессионала
🐍 Дорожная карта Python-разработчика в 2023 году
🎓💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
☕🛣️ Дорожная карта Java-разработчика в 2023 году
🦸⚡ 9 способов настройки градиента цели для поддержания мотивации
⚒️ ТОП-27 плагинов для Visual Studio Code в 2023
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году
🔝 Приоритизация задач по методу MoSCoW: как за 5 минут научиться грамотно расставлять приоритеты
🤖 Создание собственного ИИ-бота на Python за 33 строчки кода
📊 Как я входил в IT? Результаты опроса «Библиотеки программиста»
📕 ТОП-9 книг по языку программирования Go в 2023 году: от новичка до профессионала
🐍 Дорожная карта Python-разработчика в 2023 году
🎓💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ
☕🛣️ Дорожная карта Java-разработчика в 2023 году
🦸⚡ 9 способов настройки градиента цели для поддержания мотивации
⚒️ ТОП-27 плагинов для Visual Studio Code в 2023
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году
🔝 Приоритизация задач по методу MoSCoW: как за 5 минут научиться грамотно расставлять приоритеты
🤖 Создание собственного ИИ-бота на Python за 33 строчки кода
📊 Как я входил в IT? Результаты опроса «Библиотеки программиста»
🔥2🌚1
Новые каналы по PHP🎉
Готовимся к собеседованиям по PHP и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для PHP-разработчиков и тех, кто хочет ими стать👨🏫
Подписывайтесь:
👉Библиотека собеса по PHP — тут мы готовимся к интервью
👉Библиотека задач по PHP — тут решаем задачи, проходим тесты и изучаем код
Готовимся к собеседованиям по PHP и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для PHP-разработчиков и тех, кто хочет ими стать👨🏫
Подписывайтесь:
👉Библиотека собеса по PHP — тут мы готовимся к интервью
👉Библиотека задач по PHP — тут решаем задачи, проходим тесты и изучаем код
🥱5👍2
В PHP существуют функции parse_ini_string и parse_ini_file, которые используют встроенный парсер PHP для обработки INI-конфигурационных файлов. Этот парсер поддерживает наследование значений из системных переменных окружения и констант PHP, объявленных на момент парсинга текста. С версии PHP 8.3 добавлена поддержка синтаксиса значений по умолчанию для переменных окружения.
Однако, эти возможности могут представлять уязвимость безопасности данных, таких как переменные окружения и константы PHP. Пример такой атаки - предоставление конфигурационного файла, который может заставить сервер раскрыть свои собственные переменные окружения и константы.
PHP предоставляет параметры конфигурации, позволяющие отключить автоматическое преобразование типов, а также подстановку переменных окружения и констант. Путем использования флага INI_SCANNER_RAW в параметрах parse_ini_file и parse_ini_string, можно отключить эту автоматическую обработку и повысить безопасность обработки пользовательских INI-значений. Однако, важно помнить, что без явного указания этого флага функции будут уязвимы к подобным атакам.
Подробнее
Однако, эти возможности могут представлять уязвимость безопасности данных, таких как переменные окружения и константы PHP. Пример такой атаки - предоставление конфигурационного файла, который может заставить сервер раскрыть свои собственные переменные окружения и константы.
PHP предоставляет параметры конфигурации, позволяющие отключить автоматическое преобразование типов, а также подстановку переменных окружения и констант. Путем использования флага INI_SCANNER_RAW в параметрах parse_ini_file и parse_ini_string, можно отключить эту автоматическую обработку и повысить безопасность обработки пользовательских INI-значений. Однако, важно помнить, что без явного указания этого флага функции будут уязвимы к подобным атакам.
Подробнее
PHP.Watch
Security considerations when parsing user-provided INI strings and files
Security considerations when parsing user-provided INI strings and files using `parse_ini_string` and `parse_ini_file` functions.
❤6
Делаем web сервер из старого Android смартфона, без root
Статья описывает процесс превращения старого Android-устройства (в данном случае Xiaomi Mi 4c) в полноценный веб-сервер с использованием программ Termux, Nginx, PHP-FPM и MariaDB. В ходе статьи автор показывает, как установить необходимые компоненты, настроить их взаимодействие и запустить WordPress на устройстве. Важным моментом является возможность управления сервером через SSH и SFTP, что делает процесс управления и разработки удобным.
вот основные шаги, если захотите повторить:
🟠Установка Termux, эмулятора терминала с минимальным Linux окружением, на Android-устройстве.
🟠Установка и настройка OpenSSH для удаленного доступа к устройству.
🟠Установка и настройка Nginx для обслуживания статических веб-страниц и настройка поддержки PHP-FPM для обработки динамических контентных страниц.
🟠Установка MariaDB для работы с базой данных WordPress.
🟠Запуск и настройка WordPress на Android-устройстве.
Статья описывает процесс превращения старого Android-устройства (в данном случае Xiaomi Mi 4c) в полноценный веб-сервер с использованием программ Termux, Nginx, PHP-FPM и MariaDB. В ходе статьи автор показывает, как установить необходимые компоненты, настроить их взаимодействие и запустить WordPress на устройстве. Важным моментом является возможность управления сервером через SSH и SFTP, что делает процесс управления и разработки удобным.
вот основные шаги, если захотите повторить:
🟠Установка Termux, эмулятора терминала с минимальным Linux окружением, на Android-устройстве.
🟠Установка и настройка OpenSSH для удаленного доступа к устройству.
🟠Установка и настройка Nginx для обслуживания статических веб-страниц и настройка поддержки PHP-FPM для обработки динамических контентных страниц.
🟠Установка MariaDB для работы с базой данных WordPress.
🟠Запуск и настройка WordPress на Android-устройстве.
Хабр
Делаем web сервер из старого Android смартфона, без root
Главная идея была в том, чтобы проверить возможно ли из старого Android устройства сделать "полноценный" сервер с nginx, php-fpm, MariaDB и запустить на этом Wordpress. Оказывается можно и при этом с...
👍23😁8
В PHP существует мощный функционал, называемый поздним статическим связыванием (LSB), который позволяет дочерним классам использовать статические свойства и методы родительского класса через ключевое слово "static". Это предоставляет гибкость и динамичность в разработке программного обеспечения.
Здесь рассматривается пример использования позднего статического связывания в веб-приложении с базой данных. В данном примере есть базовый класс "Database", содержащий общие функции для работы с базой данных, и два подкласса "User" и "Product", представляющих объекты в приложении. Позднее статическое связывание позволяет им динамически формировать запросы к базе данных, что делает систему более гибкой и легкой в обслуживании.
Здесь рассматривается пример использования позднего статического связывания в веб-приложении с базой данных. В данном примере есть базовый класс "Database", содержащий общие функции для работы с базой данных, и два подкласса "User" и "Product", представляющих объекты в приложении. Позднее статическое связывание позволяет им динамически формировать запросы к базе данных, что делает систему более гибкой и легкой в обслуживании.
DEV Community
A real life example of using Late Static Binding in PHP.
Introduction: In the world of software development, creating flexible and dynamic systems...
🥱12👍7
Какая разница между MyISAM и InnoDB? В каких случаях и что лучше применять?
MyISAM и InnoDB - это два самых распространенных типа таблиц в MySQL. Отличия между ними заключаются в следующем:
1. Система хранения данных: MyISAM использует таблицы с фиксированной длиной строк, в то время как InnoDB использует таблицы с переменной длиной строк. Это означает, что MyISAM обычно быстрее при выполнении операций чтения, а InnoDB более эффективен при выполнении операций записи.
2. Транзакции и целостность данных: InnoDB поддерживает ACID-транзакции (Atomicity, Consistency, Isolation, Durability - Атомарность, Согласованность, Изолированность, Устойчивость). Это означает, что в случае сбоя данных, InnoDB может откатить все изменения, сохраняя целостность данных. MyISAM не поддерживает транзакции и не обеспечивает такую же уровень целостности данных.
3. Блокировка таблиц: MyISAM блокирует всю таблицу во время выполнения операции записи, в то время как InnoDB блокирует только строки, с которыми происходит операция. Это означает, что InnoDB обычно более подходит для многопользовательских приложений, где множество операций происходит одновременно.
4. Внешние ключи: InnoDB поддерживает внешние ключи (foreign keys), что облегчает поддержку связей между таблицами и обеспечивает целостность данных. MyISAM не поддерживает внешние ключи.
Итак, в каких случаях что лучше использовать:
- Если нагрузка на базу данных состоит главным образом из операций чтения, то MyISAM может быть предпочтительнее из-за его более высокой производительности.
- Если приложение требует поддержку транзакций (например, при обработке платежей или других критически важных операций), или имеется необходимость в внешних ключах для поддержания целостности данных, то InnoDB является более подходящим выбором.
В отличие от MyISAM, InnoDB также более рекомендуется при работе с многопользовательскими приложениями, где одновременно выполняется много операций записи и требуется высокий уровень целостности данных.
#вопросы_с_собеседований
MyISAM и InnoDB - это два самых распространенных типа таблиц в MySQL. Отличия между ними заключаются в следующем:
1. Система хранения данных: MyISAM использует таблицы с фиксированной длиной строк, в то время как InnoDB использует таблицы с переменной длиной строк. Это означает, что MyISAM обычно быстрее при выполнении операций чтения, а InnoDB более эффективен при выполнении операций записи.
2. Транзакции и целостность данных: InnoDB поддерживает ACID-транзакции (Atomicity, Consistency, Isolation, Durability - Атомарность, Согласованность, Изолированность, Устойчивость). Это означает, что в случае сбоя данных, InnoDB может откатить все изменения, сохраняя целостность данных. MyISAM не поддерживает транзакции и не обеспечивает такую же уровень целостности данных.
3. Блокировка таблиц: MyISAM блокирует всю таблицу во время выполнения операции записи, в то время как InnoDB блокирует только строки, с которыми происходит операция. Это означает, что InnoDB обычно более подходит для многопользовательских приложений, где множество операций происходит одновременно.
4. Внешние ключи: InnoDB поддерживает внешние ключи (foreign keys), что облегчает поддержку связей между таблицами и обеспечивает целостность данных. MyISAM не поддерживает внешние ключи.
Итак, в каких случаях что лучше использовать:
- Если нагрузка на базу данных состоит главным образом из операций чтения, то MyISAM может быть предпочтительнее из-за его более высокой производительности.
- Если приложение требует поддержку транзакций (например, при обработке платежей или других критически важных операций), или имеется необходимость в внешних ключах для поддержания целостности данных, то InnoDB является более подходящим выбором.
В отличие от MyISAM, InnoDB также более рекомендуется при работе с многопользовательскими приложениями, где одновременно выполняется много операций записи и требуется высокий уровень целостности данных.
#вопросы_с_собеседований
👍18🥱8
Шаблоны проектирования PHP: Active Record
Active Record - это шаблон проектирования, который включает в себя класс с методами сохранения данных и бизнес-логики. Однако он нарушает принцип единственной ответственности, так как класс сочетает в себе множество обязанностей. Для решения этой проблемы предлагается создать родительский класс, который реализует методы сохранения данных универсальным способом.
✔️Этот подход называется Layer Supertype.
🔎Приведен пример работы с Active Record. В данном примере создается класс Product, который содержит методы для работы с продуктами в базе данных SQLite. Класс имеет статическое свойство conn для хранения соединения с базой данных и переменную data для хранения данных продукта.
Класс Product содержит методы для выполнения различных операций с базой данных, таких как поиск продукта по ID, выборка всех продуктов с возможностью фильтрации, удаление продукта и сохранение (включая добавление и обновление).
Приведенный код также включает примеры тестирования методов:
🟠INSERT
🟠UPDATE
🟠выборка всех продуктов из базы данных.
Active Record - это шаблон проектирования, который включает в себя класс с методами сохранения данных и бизнес-логики. Однако он нарушает принцип единственной ответственности, так как класс сочетает в себе множество обязанностей. Для решения этой проблемы предлагается создать родительский класс, который реализует методы сохранения данных универсальным способом.
✔️Этот подход называется Layer Supertype.
🔎Приведен пример работы с Active Record. В данном примере создается класс Product, который содержит методы для работы с продуктами в базе данных SQLite. Класс имеет статическое свойство conn для хранения соединения с базой данных и переменную data для хранения данных продукта.
Класс Product содержит методы для выполнения различных операций с базой данных, таких как поиск продукта по ID, выборка всех продуктов с возможностью фильтрации, удаление продукта и сохранение (включая добавление и обновление).
Приведенный код также включает примеры тестирования методов:
🟠INSERT
🟠UPDATE
🟠выборка всех продуктов из базы данных.
DEV Community
PHP Design Patterns: Active Record
What is Active Record? Active Record is a design pattern that features a class that has...
🥱7👍5