Войти
Люди
Помощь
Donald Trump

Производительность php

Если вы ищете решение, как эффективно увеличить производительность php, тогда этот блог для вас. Для начала хочу сказать, что когда все тестировал, то использовал версию php 7.4. Советую и вам перейти на данную версию php.
Когда начинал писать блог, я сразу же посмотрел, как к этому подходят другие и увидел всем давно известные рецепты. Пару примеров из них:
  1. 1. ++$i вместо $i ++
  2. 2. 'Hello' вместо "Hello"
  3. ....
  4. 5. Не используйте php (мой любимый рецепт)

На самом деле использовать данные рецепты сейчас уже не только бессмысленно, но иногда и вредно и это по нескольким причинам.
1. Ухудшают читаемость
2. Теряют актуальность обычно с выходом новой версии php.
3. Меняется так же и скорость загрузки. Например в php 7.2
  1. $s = "Riblog $b and riblog $a"; // 55 мсек
  2. $s = 'Riblog '.$b.' and riblog '.$a; // 85 мсек

От сюда получается что? Что старые рецепты уже не работают и надо переходить на другие. Я предлагаю сделать шаг назад и подумать о целях и проблемах, которые мы имеем в связи с производительностью в php. У нас есть две цели/проблемы:
1. Потребляемые ресурсы (CPU,RAM, io, etc)
2. Качество сервиса (время ответа)
Естественно, что бы получить количество потребляемых ресурсов можно посмотреть, например, в разных мониторингах. Я об этом расскажу в другом блоге.
Если вас удовлетворяют все эти цели и нет проблем, то тогда и нет смысла применять рецепты. Я не призываю нарочно писать код, который не оптимальный, просто на это не стоит тратить свое время и силы.
Для решения с производительностью вам помогут:
1. Взвесить железо VS оптимизация (люди). Это самое простое решение проблем с оптимизацией, но требует дополнительных средств. Если можно решить так проблемы, то это стоит того.
И все же, если вам не подходит такой выход, то тогда перейдем к последнему решению данной проблемы и это PHP оптимизация.

Ускоряем производительность PHP


Ещё раз хочу сказать вам, что советовал бы перейти на более новые версии PHP, например на PHP 7.4. Начнем все по порядку.
Редко изменяющиеся данные:
Для примера возьму, что у вас на сайте надо определить некоторые настройки самого сайта, такие как язык, дизайн и подобное. Использовать DB, memcache это слишком тяжело, так как постоянно будет делаться сетевой запрос, что в любом случае создаст нагрузку, если у вас большой трафик на сайте. В данном случае вас спасут переменные $var. Все настройки и не изменяющиеся данные можно хранить именно в переменных/массивах. Вы просто можете сохранить настройки сайта в какой-то файл и подключать его. Вот так вот можно сделать в файле:
  1. <?php
  2. return = [
  3. 1=> 'Flat',
  4. 2=> 'ru'
  5. ];
  6. ?>

Подключайте с include
Сколько "стоит" подключить файл с помощью include?
include статического массива 100MB => занимает всего 1 мсек
На самом деле, все зависит сколько сигнатур методов и классов находится в таком файле. Естественно, чем больше у вас в файле функций, тем дольше будет загрузка. Хорошо, мы не можем полностью избавиться от include так как в php нет загрузки функций автоматически, тогда в данном случае нам поможет opcache (опкэш). Сегодня уже трудно представить даже что у кого-то он не включен. Хотя, мне встречались из 100 пару таких проектов. У него есть куча различных настроек и они многократно описаны, есть множество статей в интернете. Советовал бы почитать.
Обновляйте php
Обязательно обновляйтесь на новые версии PHP. Всегда смотрите актуальную версию и по мере их выходов переходите на них. В новых версиях много не только исправлений, но и простых решений для ваших костылей, что многократно увеличивают скорость загрузки ваших сайтов. Особенно это заметно при переходе с 5.x ветки на 7.x ветку.