Le code du benchmark :
<?php
$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
$handle = fopen($filename, 'r+');
$str = fread($handle, filesize($filename));
rewind($handle);
ftruncate($handle,0);
fwrite($handle, $string);
fclose($handle);
}
var_dump(time() + microtime() - $time);
$time = time() + microtime();
for ($i = 0; $i < 100000; $i ++)
{
$content = file_get_contents($filename);
file_put_contents($filename,$content);
}
var_dump(time() + microtime() - $time);
?>
Résultats :
float 10.173743963242
float 10.913619995117
Conclusion :
C'est bien plus rapide d'ouvrir un fichier en lecture écriture que de faire une lecture puis une écriture.
Application directe :
Dans le cache de nos objets, nous projetons de soulager nos disques en évitant d'écrire en cache disque les objets n'ayant pas changer. Pour cela il faut comparer l'objet frais et l'objet caché et donc lire puis écrire le cache si celui ci a effectivement changer.