CacheLite i NFS

Aquesta setmana m’he trobat alguns problemes al emprar la llibreria CacheLite de PEAR per tal de fer caché del resultat de l’execució de diversos mètodes PHP.

L’entorn d’execució és el següents:

  1. Frontals amb Apache que interpreten el PHP d’un directori NFS
  2. Servidor NFS amb el codi centralitzat

Els problemes apareixien al dir-li a CacheLite que emmagatzemes els arxius al sistema NFS. CacheLite començava a generar arxius de caché buits i no hi havia manera que servis la pàgina.

Després de força tafanejar i googlejar detectem que el problema resideix al bloqueig d’arxius que fa CacheLite per defecte:

//Línia 67 aprox. del Lite.php
var $_fileLocking = true;

Aquest bloqueig d’arxius fa que s’empri la funció flock de PHP i la documentació de la mateixa ja avisa:

flock() will not work on NFS and many other networked file systems. Check your operating system documentation for more details.
[…]

Així doncs, mentre busquem altres solucions, desactivant el filelocking, i activant (també venen activats per defecte) els controls d’escriptura i de lectura (WriteControl i ReadControl) tot funciona perfectament.