Выпуск №17

У Laravel почти 20тыс звёзд и самые звёздные проекты на GitHub, подкаст Sound of Symfony, релизы Magento 2 и Drupal 8, исходники yiiframework.com, PHP Must Watch на YouTube и что вы думаете о многопоточном программироании в PHP — опрос.

Всем привет!

Вы слушаете «Пятиминутку PHP», выпуск номер 17 — еженедельный подкаст о новостях из мира PHP, интересных постах в блогах и современных подходах к разработке.

Начну с высоких достижений.

Как написал Taylor Otwell в своём twitter, фреймворк Laravel скоро станет первым PHP проектом с 20тыс. звёзд на GitHub.
Непосредственно перед записью этого выпуска у Laravel было 19877 звёзд и это действительно самый звёздный PHP проект. Я не поленился и проверил, как обстоят дела по другим языкам программирования на GitHub. Для этого в поисковой строке я ввёл запрос stars:>20000 — и обнаружил 21 репозиторий на JavaScript, 3 репозтирия на Ruby и 3 на CSS, и по одному на Shell, Objective-C, HTML, Go, CoffeeScript, C++ и C.

С общем рейтинге с большим отрывом лидирует Bootstrap — 89тыс. звёзд, затем идёт довольно интересный репозиторий Free Programming Books (сборник бесплатных книг по программированию) — 45 тысяч звёзд. Затем Angular, D3, NodeJs, jQuery и т.д. — как видите, на гитхабе засилие JavaScript’а.

На днях вышел свежий выпуск подкаста Sound of Symfony — эпизод №9. Предыдущий выпуск был в мае этого года и после столь длительного перерыва ведущие вернулись к микрофонам. Обещают активно продолжать шоу! В этом выпуске разговор пошел о прошлом и будущем фреймворка Symfony и об экосистеме PHP в целом, о революции Composer и о новом инструменте Puli, об assetic против gulp, о конфигурировании Symfony приложений с помощью переменных окружения и компиляции DI контейнера, и о многом другом. Рекомендую — хороший выпуск и подкаст в целом.

Как и планировалось на прошедшей неделе состоялись мажорные релизы Magento 2 и Drupal 8 — и тут и там активно используются компоненты Symfony. Magento 2 все уже успели потроллить за класс в 2,5тыс строк и 35 параметрами в конструкторе, ну а про Drupal 8 на хабре опубликован критический взгляд от создателя PHPixie.

Разработчики фреймворка Yii опубликовали исходники сайта yiiframework.com, можно внести свой вклад в развитие. На мой вкус сайт Yii выглядит не так презентабельно, как у тех же Laravel, Symfony или Zend — есть над чем поработать!

А вы знали про такой GitHub репозиторйи https://github.com/phptodayorg/php-must-watch — это список ссылок на видео по теме PHP, как понятно из названия — просто Must Watch!

На днях посмотрел один пункт из этого списка: выступление Фабьена (автора Symfony) на конференции dotScale в 2014 году с небольшим, но ёмким докладом об экосистеме PHP. Как верно отметил Фабьен, люди не очень любят PHP как язык, но любят его как платформу, которая проста и надёжна. Глобальное состояние очищается после каждого запроса, поэтому PHP не течёт и не падает. Но есть и обратная сторона медали — долгая загрузка фреймворков на каждый запрос. Одно из решений — это сервер приложений, который будет держать фреймворк постоянно загруженным, например PHP-PM или appserver.io. Помимо сервера приложений и сам фреймворк должен быть готов к работе в таком постоянно запущенном режиме. В частности, как рассказал Фабьен, он серьёзно поработал над оптимизацией Symfony, чтобы устранить утечки памяти. Ещё он упомянул, что работает над сервером приложений для PHP, который будет написан на Go. Этот момент меня заинтересовал, но погуглив, я ничего такого не нашел. Кто-нибудь в курсе этой истории? Если сам что-то узнаю, то обязательно расскажу в одном из следующих выпусков.

В дополнение поделюсь хорошей статьёй по теме многопоточного программирования на PHP с помощью расширения pthreads.

Кстати, что вы вообще думаете по этому поводу — стоит ли вкладываться в изучение и применять на практике многопоточное и асинхронное программирование в PHP или писать демонов на PHP? С одной стороны, мы продолжаем использовать привычную экосистему и можем переиспользовать код бизнес логики, который у нас уже написан на PHP — это несомненный плюс. С другой стороны, всё это ощущается как экзотические трюки и костыли вокруг технологии, которая не была на это расчитана и имеет свои подводные камни, с которыми придётся бороться. А быть может стоит подождать поддержки асинхронного и многопоточного программирования в PHP из коробки в одном из следующих мажерных релизов? Даёшь PHPрутины! Итак, запускаю голосование в twitter (@5minphp) со следующим вопросом: «Если в большом PHP-проекте требуется многопоточность уже сегодня а) PHP — это хороший выбор б) лучше взять другой инструмент, применив (микро)сервисы».

  • hostcost

    На мой вкус сайт Yii выглядит не так презентабельно, как у тех же Laravel, Symfony или Zend — есть над чем поработать! — Разве в этом преимущество фреймворков? Какой-то однобокий подход к анализу.

    • Это комментарий был в контексте новости об исходниках сайта — сравниваю чисто внешний вид сайтов!

    • hot_rush

      code style у yii выглядит еще менее презентабельней

  • Никита Гусев

    одно дело вытесняющая многозадачность, другое — полноценные потоки. Демонов писать, мне кажется, можно, а вот thread safe версия PHP изначально сделана, чтобы заводить его на многопоточном веб сервере (например, IIS или Apache под Windows). При этом сами авторы советуют не использовать PHP в многопоточном режиме.
    http://ca3.php.net/manual/en/faq.installation.php#faq.installation.apache2
    В конце концов можно запустить по одному демону на ядро и поставить перед ними nginx.

  • Никита Гусев

    а это старый комментарий Лердорфа (2004 год, но возможно сейчас ситуация такая же)

    However, on UNIX there are a lot of basic libraries where
    thread safety is an unknown. And here I am not talking about PHP
    extensions, I am talking about 3rd-party libraries underneath our hundreds
    of extensions. Whether any one 3rd-party library is threadsafe is really
    hard to determine. There are a lot of variables involved, including which
    OS, which version of the OS, which libc, which version of that libc and on
    some platforms even the compiler flags used to compile these things. And
    to make it even more fun, tracking down a thread safety problem is damn
    well near impossible.

  • Egor Shevchik

    Давно хотел спросить.

    Вот есть laravel/laravel с 20k+ звездами и laravel/framework c 4k+ звездами. Первый — настроенный проект («сборка») веб приложения с подготовленной структурой, с необходимым минимумом кода. Второй — сам фреймворк.

    У Symfony2 также есть symfony/symfony-standard с 1k+ звездами и symfony/symfony с 11k+ звездами. Первый — настроенный проект, второй — сам фреймворк (или набор компонентов).

    Так вот почему-то у laravel люди голосуют за дистрибутив (сборку), а у symfony — за фреймворк?
    Несмотря на то, что в зависимостях композера у laravel дистрибутива только сам laravel/framework

    • bender

      Очевидно, что это из-за того как используются фремворки. Рискну предположить, что laravel много людей «пробуют», и им нравится, а symfony используется как фреймворк. У symfony — звездочек могло бы быть больше, если бы его пользователи парились «о звездочках».

  • Zhuykov

    Будут ли еще выпуски?

    • Обязательно будут, надо только с силами собраться!

  • Alma Z

    Проект FreeCodeCamp, у него сейчас более 198 000 звезд. Такой рейтинг он за год собрал что ли?