Año 2013, en mi variedad de jardín común linux vps con cpanel, con configuraciones predeterminadas, con php 5.2.17, file_put_contents siempre lleva ~ 5ms para longitudes cortas de cadena.
Accidentally 5ms es aproximadamente el tiempo de escritura comprometido de un disco duro de alta calidad.
file_put_contents($filename,'abcdefghi...~100chars',FILE_APPEND);
Esto lleva ~ 5 ms consistentemente. Eso parece incluir 'bloqueo' y 'enrojecimiento'. Así que para aquellos que se preguntan acerca de la velocidad de file_put_contents, al menos 5 ms/operación en servidores comunes 2013 04.
Si necesita velocidad, por ejemplo durante algún registro, @Matthew Flaschen dijo:
file_put_contents is equivalent to fopen, fwrite, fclose.
fclose should ensure the file is fully flushed to disk.
Entonces uno necesita :
function file_put_contents_fast() {...no fclose...}
Pero va a tomar un poco de investigación para averiguar qué sucede si los identificadores de archivo se dejan abiertas. Php closes them at exit, pero ¿realmente lo hace todo el tiempo? Incluso si se bloquea? ¿Qué sucede si un archivo queda abierto por php después de un bloqueo? etc, etc. Después de 30 minutos de lectura manual de php y de búsqueda de Google, no se mencionó tal y sus consecuencias.
'bloqueo' es el término que le interesa. Las operaciones de bloqueo hacen que su programa espere (o 'bloquee') hasta que se completen. Las operaciones no bloqueantes o asincrónicas son aquellas que se envían 'fuera del contexto' :) – meagar