Buenas tardes a todos. Estoy trabajando en un upload de archivos. Tengo el siguiente problema: necesito ir escribiendo en un archivo de texto la cantidad de bytes que han sido leidos y escritos. Actualmente este es mi código:
Código PHP:
$src = fopen($_FILES['archivo']['tmp_name'], 'r');
$dst = fopen('C:\\'.$_FILES['archivo']['name'], 'w+');
$tmp = fopen('C:\\tmp_file.txt','w');
$bytes = 0;
while ( $data = fread($src, 1024) )
{
$bytes += fwrite($dst, $data);
fwrite($tmp, $bytes);
}
fclose($dst);
fclose($src);
fclose($tmp);
El archivo temporal en el que almaceno el número de bytes escritos me va agregando uno atrás del otro el número correspondiente. Una forma de obtener lo que estoy buscando es abrir el archivo cada vez que quiero escribir datos, de esta forma el fichero vuelve siempre a cero y puedo escribir un valor nuevo empezando desde ahí y de esta forma me aseguro que el único dato que tiene este fichero es el último valor actualizado de los bytes leídos. Como dije, esta es una forma de lograrlo, pero quiero encontrar una manera más eficaz de hacerlo, ya que no quiero tener que abrir y cerrar el archivo en cada iteración del bucle. Probé utilizando ftruncate() dando el valor de 0, pero esta función el efecto que tiene en mi código es dejar el archivo sin contenido. Gracias de antemano. Saludos.