akademic.name

  • Учёба
  • Переход на php5.6 c php5.4

    Как всем уже известно, вышел релиз php 5.6.0. Релиз этот довольно оперативно добавили в debian jessie. Так что я решил попробовать новую версию в деле.

    Небольшая предыстория

    Контейнеризация

    Недавно я довольно плотно заинтересовался менеджером контейнеров Docker. Наш сервер для разработки целиком запущен внутри контейнеров. Причём организовано всё так:

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

    Собственно, так я и сделал - создал новый контейнер с php 5.6. Причём для php 5.4 у меня был сделан Dockerfile, так что я просто его немного подправил и автоматически собрал новую версию контейнера.

    Автоматические тесты

    Также недавно мы начали эксперимент с написанием автоматических тестов при помощи Codeception. Поскольку проект очень старый, то тестировать его иначе как через PhpBrowser не получается. Так что можно сказать, что запуск тестов это полноценная работа пользователя с нашей системой. Тестовая среда, кстати, также находится целиком в независимом контейнере. То есть внутри контейнера находится весь проект с базой данных, веб-сервером и php-fpm, кодом проекта, а также тестовый фреймворк и сами тесты. И запуск контейнера есть запуск всей системы с прогонкой тестов.

    Предварительные результаты

    1. При переходе разработки на php5.6 никаких серьёзных проблем не наблюдалось. Единственное, что пришлось сделать это прописать выдачу кодировки в header(), т.к. в новой версии по умолчанию стали отправляться заголовки с кодировкой UTF-8. А мы используем CP1251 и возможности, да и желания, перейти на UTF-8 нет.

    2. Тесты стали выполняться ощутимо быстрее. Чтобы представлять - числа для сравнения: В тестовом контейнере с php5.4 тесты выполнялись 4,5 минуты, а в идентичном контейнере с php5.6 выполняются за 3,5 минуты. Так что налицо ускорение на 22% на реальных задачах.

    Выводы

    Похоже что, переход на версию 5.6 пройдёт достаточно легко и безболезнено. Так что ждём выхода нескольких минорных релизов и можно ставить.

    Роутер Mikrotik 951G-2HnD