Переход на php5.6 c php5.4
Как всем уже известно, вышел релиз php 5.6.0. Релиз этот довольно оперативно добавили в debian jessie. Так что я решил попробовать новую версию в деле.
Небольшая предыстория
Контейнеризация
Недавно я довольно плотно заинтересовался менеджером контейнеров Docker. Наш сервер для разработки целиком запущен внутри контейнеров. Причём организовано всё так:
- mysql сервер в своём контейнере
- php-fpm в своём контейнере
Таким образом предельно легко менять версию php, меняя запущенные контейнеры.
Собственно, так я и сделал - создал новый контейнер с php 5.6. Причём для php 5.4 у меня был сделан Dockerfile, так что я просто его немного подправил и автоматически собрал новую версию контейнера.
Автоматические тесты
Также недавно мы начали эксперимент с написанием автоматических тестов при помощи Codeception. Поскольку проект очень старый, то тестировать его иначе как через PhpBrowser не получается. Так что можно сказать, что запуск тестов это полноценная работа пользователя с нашей системой. Тестовая среда, кстати, также находится целиком в независимом контейнере. То есть внутри контейнера находится весь проект с базой данных, веб-сервером и php-fpm, кодом проекта, а также тестовый фреймворк и сами тесты. И запуск контейнера есть запуск всей системы с прогонкой тестов.
Предварительные результаты
При переходе разработки на php5.6 никаких серьёзных проблем не наблюдалось. Единственное, что пришлось сделать это прописать выдачу кодировки в header(), т.к. в новой версии по умолчанию стали отправляться заголовки с кодировкой UTF-8. А мы используем CP1251 и возможности, да и желания, перейти на UTF-8 нет.
Тесты стали выполняться ощутимо быстрее. Чтобы представлять - числа для сравнения: В тестовом контейнере с php5.4 тесты выполнялись 4,5 минуты, а в идентичном контейнере с php5.6 выполняются за 3,5 минуты. Так что налицо ускорение на 22% на реальных задачах.
Выводы
Похоже что, переход на версию 5.6 пройдёт достаточно легко и безболезнено. Так что ждём выхода нескольких минорных релизов и можно ставить.
Переход на php7.0 c php5.6 Роутер Mikrotik 951G-2HnD