Sé file_put_contents() hace que sea muy fácil agregar datos a un archivo en PHP. Me gustaría intentar usar PHP "threads" a file_put_contents()
en el mismo archivo de registro de diferentes subprocesos de PHP. ¿Existe algún riesgo al ejecutar file_put_contents() en el mismo archivo desde diferentes subprocesos de PHP o estos hilos se bloquearán felizmente si el archivo está bloqueado o se accede por otro hilo?¿Existe algún riesgo al ejecutar file_put_contents() en el mismo archivo desde diferentes subprocesos de PHP?
EDIT: encontrado a similar question que recomienda flock(), pero la pregunta sobre el riesgo no parece abordarse por completo. ¿Son estas operaciones de escritura "atómicas"?
Una cosa no está muy clara aquí (al menos para mí) - Está claro que al usar la bandera 'LOCK_EX' nadie intervendrá mientras está escribiendo. ¿Pero a qué costo para ellos? ¿Qué sucede si una de sus principales preocupaciones es el éxito de esa * otra persona *? ¿Es seguro suponer que el otro hilo esperará a que se elimine el bloqueo y tendrá éxito en su escritura? –
[flock] (http://www.php.net/manual/en/function.flock.php) se utiliza para el bloqueo. Por defecto, la función se bloqueará hasta que se adquiera el bloqueo, y dado que 'file_put_contents' no proporciona ninguna forma de especificar nada más, supongo que también se bloqueará aquí. – Jasper
Y para aclarar las cosas: es un bloqueo de asesoramiento. Solo cuando el otro subproceso usa el mismo tipo de bloqueo funcionará, y por lo tanto es válido que alguien que llame * a esta función * (u otra cosa basada en el mismo sistema de bloqueo) bloqueará (en esta llamada). Cualquiera que no esté pasando por aros para respetar este bloqueo podrá ignorarlo por completo y no tendrá que esperar mágicamente ni nada por el estilo. – Jasper