Retour au blog
PHP

Optimisation des performances PHP

02 Jun 2024 9 min
PHP Performance OPcache

Optimiser PHP pour la production

Les performances PHP sont cruciales pour les applications à fort trafic. Chez CCM Benchmark, où les sites gèrent des millions de visiteurs quotidiens, chaque milliseconde compte.

OPcache : la base

; php.ini - Configuration optimale OPcache
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.preload=/var/www/app/config/preload.php
opcache.preload_user=www-data

Preloading PHP 8

// config/preload.php
require dirname(__DIR__).'/vendor/autoload.php';

// Précharger les classes fréquemment utilisées
$files = glob(dirname(__DIR__).'/src/Entity/*.php');
foreach ($files as $file) {
    opcache_compile_file($file);
}

Profilage avec Blackfire

# Installer l'agent Blackfire
curl -s https://packagecloud.io/install/repositories/blackfire/agent/script.deb.sh | sudo bash
sudo apt install blackfire-agent

# Profiler une requête
blackfire curl http://localhost/api/products

Optimisations Doctrine

  • Activer le cache de requêtes et de résultats
  • Utiliser les requêtes DQL avec des sélections partielles
  • Éviter le lazy loading avec des jointures explicites
  • Configurer le cache de second niveau
// Cache de requêtes Doctrine
$query = $em->createQuery('SELECT p FROM App\Entity\Product p')
    ->enableResultCache(3600, 'products_list');

$results = $query->getResult();

PHP-FPM tuning

; Configuration PHP-FPM pour haute performance
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500