que estoy usando:¿Cómo puedo usar file_put_contents() con FILE_APPEND | LOCK_EX de seguridad?
file_put_contents("peopleList.txt", $person, FILE_APPEND | LOCK_EX);
escribir en el final de un archivo y para asegurarse de que nadie más (o script) también está escribiendo en el mismo archivo al mismo tiempo.
El PHP manual dice que devolverá un valor falso si no lo consigue.
Si no puede obtener un bloqueo en el archivo, ¿fallará o seguirá intentándolo hasta que pueda? Si falla cuando no se puede obtener el bloqueo, ¿cuál sería la mejor manera de garantizar que se escriban los datos?
¿Tal vez el bucle de la función en un bucle while hasta que no devuelve falso (cringe) o simplemente proporcionarle al usuario (visitante del sitio web) algún tipo de GUI solicitando que lo intente de nuevo?
Apache genera un hilo en el que se ejecuta un proceso de PHP. Múltiples usuarios = múltiples procesos PHP. El proceso que adquirió el bloqueo es el único permitido para trabajar con el archivo. Todos los demás procesos recibirán un error de la función file_put_contents y los file_put_contents emitidos por esos usuarios no escribirán nada en el archivo. Eso significa que mientras 1 usuario está escribiendo, otros están siendo denegados y la función devolverá booleano 'false'. – Mjh
La razón por la cual LOCK_EX existe es un tema completamente diferente. Si desea escribir en el archivo independientemente, simplemente elimine LOCK_EX ya que no lo necesita y la última persona que accederá a su sitio web/script será quien tendrá los datos escritos en el archivo. Además, dado que estás haciendo un apéndice, ¿de qué sirve bloquear el archivo? Solo elimínalo. – Mjh
Estoy usando LOCK_EX y FILE_APPEND juntos porque otros scripts tienen la capacidad de escribir en el archivo y no sé qué pueden hacer mientras se le añaden datos y viceversa. – hozza