Cacher le résultat d'un processus coûteux pour 24h :
<?php if (!cache('huge_process_of_the_death', 86400)): ?> <?php foreach ($stuff as $item): ?> // Your amazingly huge iteration processes here <?php endforeach; ?> <?php cache_save() ?> <?php endif; ?>
Pour le cacher pour un utilisateur spécifique :
<?php if (!cache('huge_process_of_the_death'.md5($user->getEmail()), 86400)): ?> <?php foreach ($stuff as $item): ?> // Your amazingly huge iteration processes here <?php endforeach; ?> <?php cache_save() ?> <?php endif; ?>
On s'assure juste de prendre l'empreinte md5 d'un attribut unique dans la table associée ;)
class_exists('sfCache') or require_once($sf_symfony_lib_dir.'/cache/sfCache.class.php');
Désactiver les extensions de debug dans apache comme Xdebug ou APD
Installer la derniere version de PHP 5.x (pour la V1.0.0), pour la version Symfony 0.6.3 installer la derniere version 5.1.x
Mettre a off "magic_quotes_gpc" dans php.ini
Taille mémoire allouée minimum (328 mo) (memory_limit)
A downloader ici si pas dans la distrib php du server :
A ajouter dans php.ini : (au minimum)
Sour Windows pour tester en env de dev
extension=php_apc.dll
apc.enabled = 1
apc.enabled a mettre a 0 ou cas ou il y ai un pb.
Apres il y d'autres parametre qui peuvent etre affinés : (documentation : http://www.php.net/manual/en/ref.apc.php)
apc.shm_segments = 1 apc.shm_size = 30 apc.optimization = 0 apc.num_files_hint = 1000 apc.ttl = 0 apc.gc_ttl = 3600 apc.cache_by_default = 1 apc.filters = NULL apc.mmap_file_mask = NULL apc.slam_defens = 0 apc.file_update_protection = 2 apc.enable_cli = 0 apc.max_file_size = 1M apc.stat = 1
Eviter les requêtes inutiles
Mettre en place une politique de cache adéquate (voir doc)
$timer = sfTimerManager::getTimer('method1'); for ($index = 0; $index < $iterations; $index++) { $resultado .= "cadena " . $variable; } $timer->addTime(); $elapsedTime = $timer->getElapsedTime(); $this->debugMessage('"cadena " . $variable; ---> '. round($elapsedTime, 4). ' s');
logs
8078.5 KB