Обновить
67.3

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

Использование Nginx FastCGI Cache

Время на прочтение9 мин
Количество просмотров30K

FastCGI Cache — это система кэширования данных реализованая на уровне HTTP-сервера Nginx.

Преимущество FastCGI Cache заключается в том, что Nginx вернёт закешированный ответ пользователю сразу, как только получит запрос, при этом слой приложения не будет вовсе обрабатывать поступивший HTTP-запрос, если он имеется в кэше Nginx. 

Использование FastCGI Cache — отличный способ снизить нагрузку на вашу систему.

Если на вашем сайте есть страницы, которые изменяются редко или задержка обновления информации на некоторое время не критична, то FastCGI Cache именно то, что нужно.

Читать далее

Laravel–Дайджест (21–27 сентября 2020)

Время на прочтение2 мин
Количество просмотров3.5K

Набор уроков по восьмой версии фреймворка. Советы по Laravel и веб-разработке. Используем очереди для переноса изображений. Чистим тяжелые таблицы. Полное описание маршрутизации в Laravel.


Laravel Дайджест

Читать дальше →

Рефакторинг в стиле ниндзя и другие приемчики

Время на прочтение3 мин
Количество просмотров5.3K
Можно вечно смотреть на улучшать три вещи: первую, вторую и код, который написан не тобой. Именно ему мы решили посвятить один из ближайших онлайн-митапов:

  • посмотрим на код популярного опенсорс-проекта на гитхабе,
  • покажем разные подходы к его рефакторингу, обсудим полезные инструменты, возможные грабли — ну и немного попишем в прямом эфире.
  • а еще разыграем вот такого слона за лучшую историю о рефакторинге
    Истории будут приниматься в чате трансляции на Youtube. Лучшую историю субъективно выберут ведущие в конце стрима. Мы отправим слоника из Москвы в любую точку мира.

    У слона есть вторая сторона, на которой написано Symfony. Возможно, кому-то будет важно это знать.


    Слоник официальный. Ехал к нам 3 месяца.




Подключайся в ближайший четверг, 1-го октября, в 19 часов по Москве/Киеву/Минску. Тут можно посмотреть расписание стрима и получить напоминалку.

Под катом — знакомство с участниками и несколько «разогревающих» историй от них.

Собеседование php-developer (вопросы и ответы)

Время на прочтение10 мин
Количество просмотров285K
Так уж получилось, что в этом году я прошел ряд собеседований на позицию PHP разработчика, чего я не делал уже несколько лет. Будучи человеком ленивым практичным, перед собеседованием я попытался найти сборники вопросов-ответов, но все найденное было довольно старым, поэтому я решил сам подготовить список вопросов, которые встречал.

Обычно в статьях такого рода даются полные ответы на вопросы, но если вы собеседуетесь на достаточно серьезную позицию, краткой выжимки будет явно недостаточно и необходимо довольно глубоко понимать сам вопрос, поэтому я в основном вставил ссылки на документацию или статьи по описываемым вопросам.
Читать дальше →

Система управления иерархическими древовидными комментариями для Laravel

Время на прочтение9 мин
Количество просмотров5.3K

Пакет для фреймворка Laravel, который позволяет организовать управление древовидными комментариями. Используется симбиоз двух методов хранения иерархических структур — «Closure Table» и «Adjacency List».

Совместное применение методов «Closure Table» и «Adjacency List» позволяет: Минимизировать количество запросов к базе данных. Для извлечения ветки комментариев достаточно одного запроса, обеспечить высокую производительность, гарантировать целостность данных иерархи, работать с древовидными структурами без рекурсивных запросов.

Читать далее

PHP-Дайджест № 188 (7 – 21 сентября 2020)

Время на прочтение4 мин
Количество просмотров13K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 Beta 4, инициатива по консолидации PHP-сообщества, концепт PHP для GraalVM, предложение по дженерикам в Internals, полезные инструменты, видео, подкасты, статьи.

Приятного чтения!

PHP-класс для работы с INI-файлами

Время на прочтение3 мин
Количество просмотров3.2K

Касс-помощник для работы с INI файлами. Класс расширяет возможности класса File. Класс реализует шаблон проектирования "Строитель". В представленном классе идет реализация функционала для работы с INI файлами. В качестве базового функционала представлено создание, добавление и чтение секций, добавление и удаление ключей и другой функционал.

Узнать больше

Laravel–Дайджест (14–20 сентября 2020)

Время на прочтение2 мин
Количество просмотров4.8K

Меняем функционал Laravel UI на Laravel Fortify и кастомизируем Jetstream. Пишем SaaS-приложение. Взлом админки Laravel Nova. Разбираемся с Blade UI Kit.


Laravel Дайджест

Читать дальше →

Ускоряем кеш проекта в NoVerify (линтер для PHP) в 10 раз

Время на прочтение7 мин
Количество просмотров3.6K

Одним вечером, обсуждая с Искандером @quasilyte сложности в разработке линтера для PHP на Go, Искандер упомянул, что тесты как-то долго идут при локальном прогоне (около минуты, и, как мне кажется, для Go это довольно долго). Стали копать, и быстро выяснилось, что в основном «тормозят» тесты, которые запускают NoVerify (название линтера) в режиме со включенным race-детектором. На каждый запуск индексируется репозиторий phpstorm-stubs, в котором содержатся все определения встроенных функций/классов/констант, которые есть в PHP, и индексация этого репозитория занимает около 4 секунд на 4-ядерной машине (замечу, что без race detector всё существенно быстрее). Поскольку таких прогонов делается несколько, по одному на каждый тестируемый open-source проект, суммарное время исполнения всех тестов может занимать минуты. NoVerify позиционирует себя как очень быстрый линтер для PHP, поэтому, конечно же, такая производительность несколько печалит и нужно было найти какое-то решение.

Читать далее

Новости Yii 2020, выпуск 6

Время на прочтение5 мин
Количество просмотров9.9K

Всем привет!


Почти три месяца прошло с последнего выпуска новостей. От нас почти ничего не было слышно. Мы работали. После расширения команды Yii 3 я больше занимаюсь управлением, ревю, проектированием и обсуждениями, чем непосредственно кодом. Получается неплохо. В общем темп ускорился, и мы всё ближе к нашим целям.


Активность на официальном форуме и форуме yiiframework.ru стала совсем низкой если сравнивать со временами Yii 1 и Yii 2. Сообщество перешло в разные социальные сети и чаты.


Я думаю, что такая миграция — это плохо. В соцсетях и чатах практически невозможно найти предыдущие ответы. Одни и те же вопросы повторяются практически каждый день и ответы не оседают в поиске. Почти уверен, что тот, кто первым начнёт собирать вопросы и ответы и публиковать их как статьи в wiki или посты в блоге, станет довольно популярным.


А теперь перейдём к тому, что же интересного случилось с последнего выпуска.

Читать дальше →

Среда разработки PHP на базе Docker

Время на прочтение12 мин
Количество просмотров64K

Решение на базе Docker, которое позволит создать на локальном компьютере универсальную среду разработки на PHP за 30 - 40 минут. Несколько версий PHP — 7.3 и 7.1 с набором наиболее востребованных расширений. Готовый к работе монитор процессов Supervisor. Предварительно сконфигурированный веб-сервер Nginx. Базы данных: MySQL 5.7MySQL 8PostgreSQLMongoDB 4.2Redis. Настройка основных параметров окружения через файл .env. Возможность модификации сервисов через docker-compose.yml.

Читать далее

Улучшения покрытия PHP кода в 2020 году

Время на прочтение10 мин
Количество просмотров8.1K
А вы знали что метрики покрытия вашего кода врут?

В 2003 году Дерик Ретанс (Derick Rethans) выпустил Xdebug 1.2. Впервые в экосистеме PHP появилась возможность собирать данные о покрытии кода. В 2004 году Себастьян Бергманн выпустил PHPUnit 2, где впервые это использовал. У разработчиков появилась возможность оценивать эффективность своих наборов тестов, используя отчеты о покрытии.

С тех пор функциональность перенесли в универсальный независимый компонент php-code-coverage. В качестве альтернативных драйверов появились PHPDBG и PCOV. Но фундаментально основной процесс для разработчиков за последние 16 лет не поменялся.

В августе 2020 года с релизом php-code-coverage 9.0 и связанных с ним релизов PHPUnit 9.3 и behat-code-coverage 5.0 стал доступен новый способ оценивать покрытие.
Читать дальше →

Проблемы монетизации продуктов на WordPress

Время на прочтение5 мин
Количество просмотров5.4K
Основатели компании Creative Motion Илья Сухарев и Владислав Чернов делятся опытом монетизации своих продуктов для WordPress.



В настоящее время, WordPressв на наших территориях не очень популярен, но в мире он покрывает более 28 процентов Интернета. В WordPress более 150 000 плагинов и тем, что составляет более 1,3 миллиарда загрузок только на WordPress.org. Это реально мощная платформа, позволяющая вести прибыльный бизнес по производству плагинов.

Однако, когда мы исследуем пространство более тщательно, мы обнаруживаем, что только 5% продуктов имеют платное предложение. Вы можете подумать, что эти 5 % владеют 99 процентами рынка, но на самом деле это далеко не так.

Монетизируемые элементы составляют только 22 процента от общего числа активных элементов. Большая часть установленных и активных плагинов и тем на рынке WordPress полностью бесплатны. Не все разработчики WordPress монетизируют свой труд.
Читать дальше →

Ближайшие события

HTTP-клиент на стероидах

Время на прочтение7 мин
Количество просмотров6.6K

В этой статье я хочу поделиться с вами своими наработками для расширения функциональности вашего любимого PSR-18 совместимого HTTP-клиента.

Под катом: смена версии протокола, редиректы, логиривание, куки, кэширование, создание запросов с файлами, фейковый клиент

Читать далее

Laravel–Дайджест (7–13 сентября 2020)

Время на прочтение2 мин
Количество просмотров5.3K

Страсти по Laravel UI — сообщество против Тейлора. Лучшие практики безопасности Laravel-приложений. Уроки по новым возможностям восьмой версии фреймворка. Подробный обзор Laravel JetStream.


Laravel Дайджест

Читать дальше →

Использование HAProxy и Docker на машине разработчика при разработке сайтов

Время на прочтение6 мин
Количество просмотров24K

Написанию этого небольшого руководства предшествовало нескольких недель мучений с попытками работы над проектами, когда было необходимо чтобы был запущен контейнер с сайтом для работы, контейнеры с тестовыми сборками, чтобы тестировщики могли безопасно для основных данных проверить новые возможности системы, а так же сборки техподдержке для изучения работы с системой в условиях приближенных к "боевым".


Использование HAProxy и Docker на машине разработчика

Читать дальше →

Разбираемся с FreePBX и интегрируем его с Битрикс24 и не только

Время на прочтение13 мин
Количество просмотров27K

Битрикс24 - это огромный комбайн, который совмещает и CRM, и документооборот, и учет и еще много разных вещей, которые очень нравятся менеджерам и не очень нравятся IT персоналу. Портал используют очень много небольших и средних компаний, в том числе небольшие клиники, производственники и даже салоны красоты. Основной функцией, которую "любят" менеджеры является интеграция телефонии и CRM, когда любой звонок сразу фиксируется в CRM, создаются карточки клиента, при входящем отображается информация о клиенте и сразу видно кто он такой, что ему можно продать и сколько он должен. Но телефония от Битрикс24 и ее интеграция с CRM стоит денег, иногда немалых. В статье я расскажу опыт интеграции с открытыми инструментами и популярной IP АТС FreePBX, а также рассмотрю логику работы различных частей

Я работаю на аутсорсе в компании, которая занимается продажей и настройкой, интеграцией IP телефонии. Когда меня спросили, можем ли мы вон той вот и вот этой вот компании предложить что то для интеграции Битрикс24 с АТС, которые стоят у клиентов, а также с виртуальными АТС на различных VDS компании, я пошел в Гугл. И он мне конечно же выдал ссылку на статью в хабр, где есть и описание, и github, и вроде все работает. Но при попытке попользоваться этим решением вылезло, что Битрикс24 уже не тот, что ранее, и надо многое переделывать. Кроме того, FreePBX это вам не голый астериск, тут думать надо как совместить удобство использования и хардкорный диалплан в конфиг-файлах.

Читать далее

Кто победит: человек — венец творения или обратный слэш?

Время на прочтение10 мин
Количество просмотров3.5K

 
За основную часть перехода информационных систем с Oracle на PostgreSQL часто отвечают инструменты автоматической конвертации. Но среди гигантского объёма кода, покрываемого такими решениями, есть и исключительные истории, с которыми приходится импровизировать. В таких случаях первым делом, конечно, необходимо локализовать проблему, установить её причину и, чтобы подобрать правильное решение, подумать, нет ли аналогичных реальных или вымышленных ситуаций, которые могли бы иметь похожую природу. После этого обычно приходится рефакторить оригинальный код на Oracle, дорабатывать процессы конвертации и грамматику или реализовывать на PostgreSQL не имеющую аналогов функциональность Oracle. Однажды нам бросил вызов, на первый взгляд, примитивный запрос с ошибкой, для решения которой пришлось проводить целое расследование.

Читать дальше →

PHP-Дайджест № 187 (18 августа – 7 сентября 2020)

Время на прочтение4 мин
Количество просмотров14K

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 beta 3, принят новый синтаксис атрибутов в PHP 8, Zephir всё, целая пачка полезных инструментов, статьи, видео, подкасты.

Приятного чтения!


Laravel–Дайджест (24 августа – 6 сентября 2020)

Время на прочтение2 мин
Количество просмотров4.7K

Что нового в Laravel 8. Руководство по обновлению до новой версии. Laravel Jetstream. Пакетирование задач. Набор компонентов для Blade-шаблонов.


Laravel Дайджест

Читать дальше →