Bonjour,
Comme vous le savez sûrement le php dispose de nouveaux mécanisme de cache avec les versions récentes, certains comme l'opcache ne fonctionnent plus comme apc en se basant sur l'inode du fichier mais sur son chemin.
Si vous utilisez un outils de déploiement qui change les fichiers par le moyen de liens symboliques vous risquez de voir votre ancienne version alors meme que le site a été modifié car le php garde en cache les informations. Voici un petit script vous permettant lors du déploiement de vider le cache de chemin et l'opcache:
#!/bin/bash # $1 = nom de domaine en normal ou IDNA (pas utf8 ou accent) # $2 = docroot # appel: resetcache.sh "mondomaine.com" "/var/ici//la/public_html/current" # ne pas oublier les guillemets pour eviter les soucis en cas d'espace typo et autre # on met le fichier dans le docroot pour ne pas complexifier la creation de l'url if [[ "$1" == "-h" ]]; then echo 'arg1 => domaine en ascii, arg2 => chemin ou est cree le fichier (docroot)'; fi
# filtrage du domaine #DOMAINE=${1//[^a-zA-Z0-9_\.\-]/}}; a-z inclus les accents donc.... DOMAINE=${1//[^[:digit:]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_\.\-]/};
# si docroot existe et est un repertoire et que $2 n'est pas vide if [[ -d "${2}/" && -n $2 ]]; then # on genere un fichier vide dans le docroot de façon propre et "secure" RANDOM_NAME=$(mktemp -q --tmpdir="${2}" --suffix=".php" resetXXXXXXXXXXXXXXXXXX ); # si fichier temporaire existe et est vide if [[ -e "${RANDOM_NAME}" && ! -s "${RANDOM_NAME}" ]]; then echo "<?php opcache_reset();clearstatcache (true); ?>" > "${RANDOM_NAME}"; # on prend le nom du fichier sans le chemin CHEMINHTTP=$(basename "${RANDOM_NAME}"); # curl sur ip externe et non pas localhost car haproxy n'ecoute pas sur localhost # on utilise le header pour pouvoir flush meme si le domaine ne pointe pas encore curl -s -H "Host: ${DOMAINE}" "http://$(hostname -f)/${CHEMINHTTP}" > /dev/null; rm "${RANDOM_NAME}"; else echo "echec de mktemp" fi else echo "manque le chemin ou chemin invalide"; fi
En espérant que cela vous aidera. N'hésitez pas a nous contacter si vous y apportez des améliorations.
Cordialement, AQUOES.
|