Comment puis-je utiliser file_put_contents() avec FILE_APPEND | LOCK_EX de sécurité?

Je suis en utilisant:

file_put_contents("peopleList.txt", $person, FILE_APPEND | LOCK_EX);

à écrire à la fin d'un fichier et assurez-vous que personne d'autre (ou le script) est également écrit pour le même fichier en même temps.

La Manuel PHP dit qu'il sera de retour d'une falsy valeur en cas d'échec.

Si elle ne peut pas obtenir un verrou sur le fichier, il va échouer ou de continuer à essayer jusqu'à ce qu'il peut? Si elle ne parviennent pas quand pas de serrure peut être obtenue, quelle serait la meilleure façon de s'assurer que les données sont écrites?

Peut-être le bouclage de la fonction dans une boucle while jusqu'à ce qu'il ne retourne pas false (grincer des dents) ou simplement d'offrir à l'utilisateur (site visiter) avec une sorte de GUI pour lui demander d'essayer de nouveau?

  • Apache génère un thread dans lequel un processus PHP est exécuté. Plusieurs utilisateurs = plusieurs processus PHP. Le processus qui a acquis le verrou est le seul autorisé à travailler avec le fichier. Tous les autres processus recevrez un message d'erreur de fonction file_put_contents et file_put_contents émis par ces utilisateurs ne rien écrire dans le fichier. Cela signifie que tout 1 utilisateur en est de l'écriture, d'autres sont privées et de la fonction return boolean false.
  • Pourquoi LOCK_EX existe, c'est un tout autre sujet. Si vous souhaitez écrire dans le fichier, peu importe, il suffit de retirer le LOCK_EX puisque vous n'en avez pas besoin et la dernière personne à accéder à votre site internet, votre script sera celui qui aura les données écrites sur le fichier. Aussi, puisque vous êtes en train de faire ajouter - ce qui est le point de verrouillage du tout le fichier? Suffit de le retirer.
  • Je suis à l'aide de LOCK_EX et FILE_APPEND ensemble, parce que les autres scripts ont la possibilité d'écrire dans le fichier et je n'ai pas ce pouvoir tandis que les données sont ajoutées à elle et vice versa.
  • Faire tous les scripts d'ajouter des données au fichier?
  • Non, certains vont écraser et certains vous venez de lire.
  • Si vous avez vraiment besoin d'un verrou pour un fichier pour écrire à la fin de celui-ci, il peut être préférable de stocker ces données dans mysql et demandez à chaque nouveau écrire une nouvelle ligne et combind l'écrit en un seul doc. De cette façon, vous n'aurez pas de verrouillage des erreurs. Mais je vais aussi répondre à la question.

InformationsquelleAutor hozza | 2012-01-19