Creo que la forma que usas es la única posible. Piensa que por más que lograras "no leer" todo el archivo, el mismo se tiene que escribir en un clúster del disco y tiene punteros que permiten ubicarlo en el mismo. Es decir, que el archivo tendría que escribirse a partir del lugar donde empieza, no se puede agregar información "antes" (en el disco). Por lo tanto, PHP tendría que "desplazar" todo el contenido anterior con el nuevo antes para que coincida con el comienzo del clúster donde estaba... en definitiva, no te puedes ahorrar demasiado proceso, por más que logres "no leer" el resto del archivo (que además no creo que se pueda). Te recomiendo que renuncies un poco de eficiencia en el programa o que directamente escribas los cambios al final del archivo (como hacen la mayoría de archivos log). ¡Suerte!