PHP-Дайджест № 120 (1 – 19 ноября 2017)


    Свежая подборка со ссылками на новости и материалы. В выпуске: 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 о расширенном стиле кодирования вошел в стадию черновика; много идей для новых стандартов и другие новости.
    • ru Новый код ответа 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.


    Материалы для обучения




    Занимательное



    Спасибо за внимание!

    Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
    Вопросы и предложения пишите на почту или в твиттер.

    Прислать ссылку
    Поиск ссылок по всем дайджестам
    Предыдущий выпуск: PHP-Дайджест № 119

    Zfort Group 318,73
    Компания
    Поделиться публикацией
    Комментарии 20
    • +1
      Я для создания вебсокета в laravel использовал это — github.com/Askedio/laravel-ratchet
      • +3
        Бро, а асинхронный пхп стоит того? Вижу много топиков на эту тему начало всплывать, но все мне как-то не сильно вериться в том, что это работает как надо. Что думаешь?
        • +2
          стоит, если вам надо неблокирующий I/O
          а что значит «работает как надо»?
          • +5
            Есть задачи где стоит использовать и PHP отлично справляется. Есть проблемы общие для любого асинхронного кода, и есть нюансы PHP. Сам использую на продакшне в нескольких проектах.
            Еще часто использую leproxy (который на PHP), когда нужно быстро поднять прокси :-)
            • +1

              Спасибо за дайджест!

            • +5
              Мы — Gamedev, перейдя на php-pm мы уменьшили количество серверов с 8 до 1(на самом деле 2, но он только ради failover). Наша ежедневная аудитория — 200 000 пользователей. Под капотом php-pm — reactphp. Работает это — КАК НАДО. Средняя нагрузка 700-1500 rps (в зависимости от времени суток). Запросы не пустышки — 95% модифицируют данные пользователя и сохраняют в базу. Уже 2ой год у нас это все крутится в продакшне… и да, наши сервера — дешевые Hetzner px120…
              но все мне как-то не сильно вериться в том, что это работает как надо

              Нам тоже не верилось тогда, что мы сможем держать такую нагрузку на php, но мы же программисты, да? Собрали за недельку тестовый билд, да погоняли…
              • +1
                memory leaks нету? и как вы хендлите подключения к базе? какой-то пулл соединений/persistent connections/открывает закрываете каждый раз?
                • 0
                  Memory leaks нет уже как с версии PHP 5.3.
                  Хотя при желании их можно сделать самому. Но в целом сборщик мусора всё собирает нормально.
                  • +2
                    Желательно все же их не делать — сборщик мусора само по себе не очень быстрая штука, если у вас в памяти большой пул объектов — деградация производительности очень существенная — рассчитывать на него не стоит и теряется весь смысл.
                    • 0
                      Полностью согласен с вами.
                      Мой основной посыл был именно в том что PHP сам по себе не течёт уже давно.
                      • 0
                        так я ведь и не про PHP сам
                        да и PHP бывает всё же иногда течёт, может в PHP баг трекере глянуть, проскакивают memory leak баги
                    • 0
                      ну c react это другой компот… когда пхп используется только для обработки реквестов и на этом убивается, то мелкие memory leaks могут показаться незаметными или не значительнымы… а когда приложение все время работает как в случае с react то даже эти мелкие memory leaks могут оказаться большой проблемой. Вообще пхп сам по себе может и норм, но вот мне лично стремно laravel или symfony ставить на react боюсь, что там есть вещи такие которые не очищаются полагаясь на то что все очистится когда процесс пхп умрет после обработки реквеста.
                    • +3
                      Memory leaks именно в самом php уже давно встречаются крайне редко — чаще всего они относятся к сторонним библиотекам.
                      В php-pm из асинхронного — прокси, производительность которого очень высока и с memory leaks в нем мы не сталкивались ни разу.
                      В качестве основной БД у нас используется Redis, другие бд также используем — с ними работа идет через очереди(beanstalkd). С учетом архитектуры php-pm — фактически у нас persistent connection закрывающиеся\открывающиеся каждые 10000 запросов.
                      Сейчас мы плавно переходим на amphp/aerys результаты еще вкуснее. Наверное мы бы переходили активнее, но производительности текущего решения
                      с php-pm нам хватает с огромным запасом.
                  • 0
                    Нормально работает, не течет.

                    Только библиотек (сетевое взаимодействие) меньше асинхронных, чем для Node.js, но работает не хуже.
                  • 0
                    >>по стандарту JSON5.
                    >>Not an official successor to JSON
                    Как бы взаимоисключающие.
                    Просто очередные «улучшатели» и советовать это использовать, наживать себе врагов я думаю :)
                    • 0
                      Как бы взаимоисключающие.

                      что взаимоисключающее? JSON5 это вполне себе стандарт, описывающие расширение JSON.

                      • –4
                        >> Not an official
                        Это стандарт? Ок. Буду знать.
                        Учитывая что там в яваскрипте творится по «стандартам» идите вы со своим «улучшением»
                    • +3
                      Список новостей о Yii2 за несколько недель
                      image
                    • 0
                      «Как связать Monolog и ELK» очень странная статья. Рэбиты, гельфы, зачем так сложно? Монолог пишет json, filebeat отправляет данные в logstash, где очень простой конфиг, logstash в elastic.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое