2011-05-22 12 views
5

En PHP, escribiré (crearé) el archivo usando file_put_contents($filename, $data);
Está bien, pero quiero detectar el evento final del proceso.

Actualmente, la página muestra el estado de carga.
Esta es actualmente la forma en que puedo saber si está terminado o no.

Quiero detectar con el código.Cómo detectar el final con file_put_contents() en php?

+0

probablemente duplicar .. tal vez este enlace es útil http://stackoverflow.com/a/21842519/4519636 – Zakynthos

Respuesta

9

Esto es una llamada de E/S de bloqueo, por lo que finaliza cuando vuelve la llamada a la función. El valor de retorno es la cantidad de bytes escritos (en caso de éxito).

+2

1 respuesta clara, la referencia aquí: http://php.net/file- put-contents – Jonah

+0

Ok, ahora veo que 'file_put_contents()' devuelve el tamaño del archivo, al finalizar. Además, ¿puedo detectar el tamaño 'antes'? Utilicé: 'file_get_contents()'. Si es así, puedo detectar si el proceso es exitoso escribiendo todos los bytes (o) no. – Alvin

+1

El tamaño del archivo (antes o después) se puede determinar llamando 'filesize()' –

5

Se pone todo en suspenso hasta que se acaba

Por lo que podría utilizar algo como esto para determinar cuando se ha terminado de escribir el archivo.

echo "The file's contents are now being written, please wait."; 
file_put_contents($filename, $data); 
echo "The file's contents have been written."; 
3

recuperar la cabecera Content-Length de la primera ubicación remota. Puede usar get_headers para hacer eso. De este modo:

$headers = get_headers($url, 1); 
echo "To download: " . $headers['Content-Length'] . " bytes.<br />"; 
+0

¿Funcionará esto siempre? ¿O hay casos en que la aplicación web o el servidor se niega a darle solo los encabezados? ¿El método get_headers también envía HEAD o GET? – rzetterberg

+0

Woooooooooooow! ¡¡Sí!! Muchas gracias minitech! ;) – Alvin

+0

No creo que el servidor pueda negarse a enviar encabezados por algo. Y desde la página: "Si alguien tiene curiosidad, como yo, esta función no envía un verbo HEAD. En su lugar, envía un GET. Lo cual en mi caso no es ideal porque necesito una manera rápida de obtener un estado HTTP (200 , 404, etc.) El problema con GET es que, para casos como el mío, no quiero que todos los gastos generales con los datos que se devuelven ". – Ryan

Cuestiones relacionadas