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