«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Повышение эффективности PHP: проверенные методы оптимизации производительности

Повышение эффективности PHP: проверенные методы оптимизации производительности

Опубликовано 8 ноября 2024 г.
Просматривать:854

Boosting PHP Efficiency: Proven Techniques for Performance Optimization

Оптимизация производительности PHP обеспечивает бесперебойную работу наших веб-приложений, быстрое реагирование и эффективную обработку трафика. Ниже приведено подробное пошаговое руководство о том, как эффективно максимизировать производительность PHP, с практическими примерами для каждой стратегии оптимизации.


Часть 1. Обновление до последней стабильной версии PHP

Шаг 1. Проверьте текущую версию PHP

Начните с проверки текущей версии PHP, установленной в вашей системе:

php -v

Если ваша версия устарела, обновление до последней стабильной версии PHP часто сопровождается повышением производительности и появлением новых функций.

Шаг 2. Обновите PHP (при необходимости)

Чтобы установить последнюю версию PHP, выполните следующие команды для Ubuntu:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt install php8.2 # Replace with the latest version

Почему?

Каждая новая версия PHP повышает производительность. Например, PHP 7.x обеспечивает почти 50-процентное улучшение времени выполнения по сравнению с PHP 5.x, а PHP 8.x имеет и другие значительные улучшения.


Часть 2. Использование кэширования кода операции (PHP Opcache)

Шаг 1. Включите Opcache в PHP

Opcache хранит предварительно скомпилированный байт-код скрипта в памяти, что снижает необходимость PHP загружать и анализировать скрипты при каждом запросе. Чтобы включить его:

  1. Откройте файл php.ini:
   sudo nano /etc/php/8.2/fpm/php.ini # Use your PHP version
  1. Найдите настройки Opcache и включите их:
   opcache.enable=1
   opcache.memory_consumption=128
   opcache.max_accelerated_files=10000
   opcache.revalidate_freq=0
  1. Перезапустите PHP-FPM и Nginx:
   sudo systemctl restart php8.2-fpm
   sudo systemctl restart nginx

Почему?

Opcache может значительно повысить производительность, устраняя необходимость компилировать PHP-код при каждом запросе, что значительно снижает загрузку ЦП и время выполнения запроса.


Часть 3. Оптимизация запросов к базе данных

Шаг 1. Индексируйте таблицы базы данных

Неправильная индексация базы данных может замедлить выполнение запроса. Убедитесь, что вы индексируете столбцы, используемые в предложениях WHERE или для сортировки.

Пример запроса MySQL:

CREATE INDEX idx_user_email ON users(email);

Шаг 2. Используйте профилирование запросов

Профилируйте запросы к базе данных, чтобы найти узкие места. Например, Eloquent ORM от Laravel позволяет профилировать запросы:

DB::enableQueryLog();
$users = DB::table('users')->get();
dd(DB::getQueryLog());

Почему?

Оптимизируя запросы к базе данных и индексируя критические столбцы, вы можете значительно сократить время выполнения запроса и тем самым ускорить работу PHP-приложения.


Часть 4. Включите сжатие Gzip

Шаг 1. Включите Gzip в Nginx.

Gzip уменьшает размер данных, отправляемых с вашего сервера клиенту, ускоряя загрузку страницы. Чтобы включить его в Nginx:

  1. Откройте файл конфигурации Nginx:
   sudo nano /etc/nginx/nginx.conf
  1. Добавьте следующие настройки Gzip:
   gzip on;
   gzip_comp_level 2;
   gzip_types text/css application/javascript application/json image/svg xml;
   gzip_min_length 256;
  1. Сохраните и перезапустите Nginx:
   sudo systemctl restart nginx

Почему?

Включение сжатия Gzip уменьшает объем данных, которые необходимо передать, что приводит к ускорению загрузки страниц и снижению использования полосы пропускания.


Часть 5. Используйте сеть доставки контента (CDN)

Шаг 1. Настройте CDN для статических ресурсов

CDN, такие как Cloudflare или Amazon CloudFront, хранят копии статических ресурсов, таких как CSS, JavaScript и изображения, на распределенных серверах по всему миру, что делает их доступными ближе к пользователю.

Пример:


Почему?

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


Часть 6. Использование PHP-FPM и настройка

Шаг 1. Установите и настройте PHP-FPM

Убедитесь, что вы используете PHP-FPM (FastCGI Process Manager), который лучше оптимизирован для сред с высокой нагрузкой:

sudo apt install php8.2-fpm

Шаг 2. Настройте параметры PHP-FPM.

Вы можете настроить параметры PHP-FPM для эффективной обработки большего количества запросов, изменив настройки pm.max_children, pm.start_servers, pm.min_spare_servers и pm.max_spare_servers в файле конфигурации пула PHP-FPM.

Отредактируйте файл конфигурации пула:

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Увеличьте pm.max_children в зависимости от доступной памяти и трафика:

pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

Перезапустите PHP-FPM и Nginx:

sudo systemctl restart php8.2-fpm
sudo systemctl restart nginx

Почему?

PHP-FPM позволяет вашим PHP-процессам эффективно обрабатывать больше одновременных запросов, сокращая время ответа сервера при большой нагрузке.


Часть 7. Минимизация и объединение ресурсов

Шаг 1. Минимизируйте CSS, JavaScript и HTML

Минимизация файлов CSS, JavaScript и HTML путем удаления ненужных пробелов и комментариев уменьшает размер файла.

Используйте такие инструменты, как Laravel Mix или Gulp:

npm install laravel-mix --save-dev

Пример файла webpack.mix.js для Laravel:

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .minify('public/js/app.js')
    .minify('public/css/app.css');

Шаг 2. Включите кеширование браузера

В файле конфигурации Nginx добавьте кеширование для статических ресурсов:

location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2)$ {
    expires 1y;
    access_log off;
    add_header Cache-Control "public";
}

Почему?

Минимизация и объединение ресурсов, а также включение кэширования в браузере уменьшают размер ваших файлов и сокращают время загрузки, что приводит к более быстрому приложению.


Часть 8. Используйте Redis или Memcached для кэширования

Шаг 1. Установите Redis

Чтобы установить Redis:

sudo apt install redis-server

Шаг 2. Настройте Laravel для использования Redis

В Laravel откройте файл .env и настройте Redis в качестве драйвера кэша:

CACHE_DRIVER=redis

Шаг 3. Кэширование запросов к базе данных

Используйте кэширование запросов, чтобы ускорить повторные запросы к базе данных:

$users = Cache::remember('users', 60, function() {
    return DB::table('users')->get();
});

Почему?

Кэшируя запросы к базе данных, вы снижаете нагрузку на базу данных и значительно сокращаете время ответа для часто используемых данных.


Часть 9. Оптимизация автозагрузчиков

Шаг 1. Используйте оптимизацию автозагрузчика Composer

Оптимизация автозагрузчиков Composer для работы:

composer install --optimize-autoloader --no-dev

Шаг 2. Удаление неиспользуемых поставщиков услуг

В Laravel отключите всех неиспользуемых поставщиков услуг в config/app.php, чтобы уменьшить использование памяти и ускорить загрузку приложения.

Почему?

Оптимизация автозагрузки компилирует карты классов, ускоряя загрузку классов. Отключение неиспользуемых служб помогает приложению использовать меньше ресурсов.


Часть 10: Мониторинг и профилирование

Шаг 1. Используйте Laravel Telescope (или другие инструменты профилирования)

Установите Laravel Telescope для профилирования вашего приложения:

composer require laravel/telescope
php artisan telescope:install
php artisan migrate
php artisan serve

Шаг 2. Используйте New Relic или Blackfire для расширенного профилирования

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

Почему?

Инструменты мониторинга и профилирования помогают выявлять медленные запросы, утечки памяти и узкие места в вашем PHP-приложении, позволяя заблаговременно устранять проблемы с производительностью.


Заключение:

Следуя этим шагам, вы сможете значительно повысить производительность вашего PHP-приложения. От обновления PHP и включения кэширования кода операции до оптимизации запросов к базе данных и настройки PHP-FPM — каждый шаг способствует созданию более гибкого и масштабируемого приложения.

Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/mdarifulhaque/boosting-php-efficine-froven-techniques-for-performance-optimization-4plh?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с исследованием[email protected].
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3