Aller au contenu

Comportement bizarre de file_exists() en php


Adrien

Recommended Posts

Bonjour,

Avez-vous déjà rencontré des soucis relatifs à la fonction file_exists() de php ?  J'ai remarqué que j'ai souvent des alertes E_WARNING suite à l'accès à un fichier qui n'existe pas. Pourtant, un test est effectué juste avant l'opération comme ici par exemple :

if(file_exists($this->chemin)){
       unlink( $this->chemin ) ;
 }

Et je me retrouve avec  : WARNING unlink, no such file or directory... Comme si file_exists() ne disait pas la vérité à l'instant t. Bon, on pourrait aussi très bien imaginer que la présence du fichier change entre les 2 appels de fonction mais ça le fait beaucoup trop fréquemment pour être le cas.

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • Administrateurs

Bonjour, 

a quelle fréquence vous effectuez ceci sur des fichiers qui ont quelle durée de vie?
Si c'est quelque chose de rapide, il est possible que le NFS joue un rôle important dans ce problème. 
Si vous créez un fichier A et que vous essayez de le supprimé dans la seconde qui suit , depuis un autre serveur WEB il est possible que fichier ne soit pas encore présent. 
Ou bien , le fichier est supprimé sur le serveur 1 et sur le serveur 9 vous faites la vérification si le fichier existe (il existe) et juste avant de le supprimer il n'est plus présent. 
Le délai est cependant très court normalement. 

Lien vers le commentaire
Partager sur d’autres sites

En l’occurrence là, le problème se produit sur mon système de cache. Lorsque quelqu'un fait quelque chose, il y a suppression du fichier en cache. Ensuite, lorsqu'une autre personne consulte la ressource, je regarde si le fichier correspondant existe, si c'est le cas, je n'ai qu'à le lire, autrement, je fais mes requêtes et je stocke le résultat dans un fichier. Effectivement, ça peut venir du nfs, j'avais pas pensé à ça.

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Il faut que je continue à investiguer. Le problème ne se pose (d'après mes logs) que sur 2 données particulières mises en cache, il y a donc peut-être un souci de mon côté. En attendant, j'ai caché les warning sur le site.

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...