Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 RC6, новости PHP-FIG, пара принятых RFC для PHP 7.3, порция полезных инструментов, материалы по асинхронному PHP, и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.2.0 RC6 — Шестой и, вероятно, последний релиз-кандидат ветки 7.2. Затаив дыхание ждем финального релиза уже 30 ноября.
- Статистика использования версий PHP – 2017.2 — Традиционная компиляция статистики за полгода на основе информации, которую Composer отправляет при подключении к packagist.org. Суммарная доля PHP 7 составляет уже 67.39%.
- Месяц PHP FIG #1: октябрь 2017 — Первый регулярный обзор новостей из группы PHP-FIG. PSR-12 о расширенном стиле кодирования вошел в стадию черновика; много идей для новых стандартов и другие новости.
- Новый код ответа HTTP — 103
PHP Internals
- [RFC] Allow a trailing comma in function calls — Предложение принято, а значит в ветке 7.3 станет возможным использование запятой после последнего аргумента функции:
var_dump( $foo, $bar, $buz, );
- [RFC] Flexible Heredoc and Nowdoc Syntaxes — Предложение по улучшению многострочных текстовых блоков также принято. Станут доступны поддержка отступов и отмена необходимости перевода строки после закрывающего маркера:
<?php $values = [<<<EOT a b c EOT, 'd e f'];
Инструменты
- spiral/goridge — Высокопроизводительный RPC из PHP в Go без зависимостей.
- BitOne/php-meminfo — Расширение, которое выводит информацию об использовании памяти и предназначено для обнаружения утечек.
- simplario/quedis — Простая очередь на Redis. Прислал Влад Грознов.
- daveearley/cli.fyi — Код сервиса cli.fyi, который выведет различную информацию в консоли при запросе с помощью curl.
- ausi/slug-generator — Библиотека для генерации урлов (slug) на основе CLDR.
- vozlt/nginx-module-vts — Расширение для nginx, которое выводит полезную страницу со статусом.
- colinodell/json5 — Реализация де/кодирования JSON по стандарту JSON5.
- mnapoli/pretty — CLI интерфейс для упрощения работы с CodeSniffer и PHP-CS-Fixer.
- LambdaPHP — Инструмент для быстрого запуска PHP-приложения на AWS Lambda.
Материалы для обучения
Symfony
- Пачка уязвимостей в компонентах Symfony: CVE-2017-16653, CVE-2017-16652, CVE-2017-16654, CVE-2017-16790
- Неделя Symfony #566 (30 октября — 5 ноября 2017)
- Неделя Symfony #567 (6-12 ноября 2017)
- Неделя Symfony #568 (13-19 ноября 2017)
- Сравнение PHP 7.1 и 7.2 производительности (на Docker и Symfony Flex)
Yii
- Yii 2.0.13
- Yii development notes #17
- Обсуждения планов и идей для Yii 2.1 на русском и английском, по результатам которых сформирована доска в Trello, где можно отслеживать статус идей.
Laravel
- TheOrchid/WebSocket — WebSockets сервер для Laravel на базе Ratchet.
- akalongman/laravel-lodash — Различные полезности для Laravel >=5.5.
- Самотестируемая система с оповещениями на Laravel + Bitbucket + HipChat
Async PHP
- clue/php-stdio-react — Библиотека для удобной работы с консольным вводом/выводом (STDIN, STDOUT) в асинхронном режиме.
- seregazhuk/php-react-promise-testing — Хелпер для PHPUnit для тестирования промисов ReactPHP.
- О магии асинхронного PHP
- Расширение дочерних процессов для ReactPHP
- Создание клиента для Memcached на ReactPHP: События
- Создаем сервер для потокового видео — Глава из книги по асинхронному PHP.
CMS
- WordPress 4.9 “Tipton”
- SQL injection уязвимости в WordPress — технические детали, бэкграунд.
- postlight/headless-wp-starter — WordPress в качестве RESTful бекенда и React на фронте.
- tim-field/graphql-wp — GraphQL для WordPress.
- Magento Tech Digest #6 — News, Tutorials and Tools (October 31 — November 13, 2017)
- Оптимизация «switch» выражений в PHP 7.2
- Экспорт функций а-ля Javascript — Интересный трюк с использованием возвращаемого значения require:
<?php return [ 'times2' => function (int $x): int { return $x * 2; }, 'answer' => function (): int { return 42; } ];
<?php ['times2' => $mul] = require 'foo.php'; var_dump($mul(21)); // int(42)
- Как деплоить с помощью Deployer — Прислал Антон Багаев.
- О внедрении профайлера blackfire.io в CI-процесс
- Как правильно читать большие файлы на PHP
- Интересная заметка Никиты Попова о производительности при использовании PHP-Parser
- Как связать Monolog и ELK
- Оптимизация MySQL: индексы, медленные запросы, конфигурация
- Расстояние Левенштейна в MySQL и алгоритмы нечёткого поиска средствами PHP
- Во всём виноват PHP OPCache?
- Golang, PHP, Кинопоиск и Telegraph — Что их объединяет?
Занимательное
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 119
Комментарии (20)
nesttor
20.11.2017 12:05Бро, а асинхронный пхп стоит того? Вижу много топиков на эту тему начало всплывать, но все мне как-то не сильно вериться в том, что это работает как надо. Что думаешь?
andrewnester
20.11.2017 13:01стоит, если вам надо неблокирующий I/O
а что значит «работает как надо»?
p4s8x
20.11.2017 14:13+1Мы — Gamedev, перейдя на php-pm мы уменьшили количество серверов с 8 до 1(на самом деле 2, но он только ради failover). Наша ежедневная аудитория — 200 000 пользователей. Под капотом php-pm — reactphp. Работает это — КАК НАДО. Средняя нагрузка 700-1500 rps (в зависимости от времени суток). Запросы не пустышки — 95% модифицируют данные пользователя и сохраняют в базу. Уже 2ой год у нас это все крутится в продакшне… и да, наши сервера — дешевые Hetzner px120…
но все мне как-то не сильно вериться в том, что это работает как надо
Нам тоже не верилось тогда, что мы сможем держать такую нагрузку на php, но мы же программисты, да? Собрали за недельку тестовый билд, да погоняли…andrewnester
20.11.2017 14:18+1memory leaks нету? и как вы хендлите подключения к базе? какой-то пулл соединений/persistent connections/открывает закрываете каждый раз?
Fedot
20.11.2017 14:27Memory leaks нет уже как с версии PHP 5.3.
Хотя при желании их можно сделать самому. Но в целом сборщик мусора всё собирает нормально.p4s8x
20.11.2017 15:16Желательно все же их не делать — сборщик мусора само по себе не очень быстрая штука, если у вас в памяти большой пул объектов — деградация производительности очень существенная — рассчитывать на него не стоит и теряется весь смысл.
Fedot
20.11.2017 18:36Полностью согласен с вами.
Мой основной посыл был именно в том что PHP сам по себе не течёт уже давно.andrewnester
21.11.2017 12:56так я ведь и не про PHP сам
да и PHP бывает всё же иногда течёт, может в PHP баг трекере глянуть, проскакивают memory leak баги
ivorobioff
20.11.2017 19:37ну c react это другой компот… когда пхп используется только для обработки реквестов и на этом убивается, то мелкие memory leaks могут показаться незаметными или не значительнымы… а когда приложение все время работает как в случае с react то даже эти мелкие memory leaks могут оказаться большой проблемой. Вообще пхп сам по себе может и норм, но вот мне лично стремно laravel или symfony ставить на react боюсь, что там есть вещи такие которые не очищаются полагаясь на то что все очистится когда процесс пхп умрет после обработки реквеста.
p4s8x
20.11.2017 15:11Memory leaks именно в самом php уже давно встречаются крайне редко — чаще всего они относятся к сторонним библиотекам.
В php-pm из асинхронного — прокси, производительность которого очень высока и с memory leaks в нем мы не сталкивались ни разу.
В качестве основной БД у нас используется Redis, другие бд также используем — с ними работа идет через очереди(beanstalkd). С учетом архитектуры php-pm — фактически у нас persistent connection закрывающиеся\открывающиеся каждые 10000 запросов.
Сейчас мы плавно переходим на amphp/aerys результаты еще вкуснее. Наверное мы бы переходили активнее, но производительности текущего решения
с php-pm нам хватает с огромным запасом.
OnYourLips
20.11.2017 19:11Нормально работает, не течет.
Только библиотек (сетевое взаимодействие) меньше асинхронных, чем для Node.js, но работает не хуже.
zorn_v
20.11.2017 12:46>>по стандарту JSON5.
>>Not an official successor to JSON
Как бы взаимоисключающие.
Просто очередные «улучшатели» и советовать это использовать, наживать себе врагов я думаю :)
kowap
20.11.2017 12:46+1Список новостей о Yii2 за несколько недель
andrewnester
20.11.2017 13:03Можете прочитать про интересное issue здесь :)
github.com/yiisoft/yii2/issues/9438
koluchiy01
20.11.2017 13:36«Как связать Monolog и ELK» очень странная статья. Рэбиты, гельфы, зачем так сложно? Монолог пишет json, filebeat отправляет данные в logstash, где очень простой конфиг, logstash в elastic.
Dead_Angel
Я для создания вебсокета в laravel использовал это — github.com/Askedio/laravel-ratchet