Usage de flock() incompatible avec le système de fichiers réseau NFS. Plante Apache
L'usage de la fonction flock() par SPIP est totalement incompatible avec le système de fichier réseau NFS. Or de nombreux SPIP sont installés en hébergement mutualisé, où l'usage de NFS est très fréquent, comme d'ailleurs sur les clusters pour les gros sites web.
L'usage d'un LOCK_EX fait bloquer le processus PHP. A force de s'accumuler, les processus PHP trustent tous les processus Apache disponibles, qui finit par ne plus pouvoir répondre aux autres visiteurs en l'absence de processus Apache disponibles. Ceci a été constaté sur notre serveur avec Apache 2.0.59 et PHP 5.1.6 en [[FastCGI]]. Je n'ai pas testé sans [[FastCGI]], mais flock est officiellement annoncé comme non compatible avec NFS sur la doc de PHP.
Nous avons dû désactiver la fonction flock dans le php.ini pour éviter que SPIP refasse crasher apache (enfin il ne crashe pas, mais il ne peut plus répondre aux visiteurs...). Du coup SPIP tourne chez nous sans verrouillage de fichiers.
Voir ce commentaire qui suggère l'usage de la fonction link() compatible avec le NFS. http://fr2.php.net/manual/fr/function.flock.php#68875