stream_notification_callback Una función de retrollamada para el parámetro de contexto de notificación &reftitle.description; voidstream_notification_callback intnotification_code intseverity stringmessage intmessage_code intbytes_transferred intbytes_max Una función de tipo callable, usada por el parámetro de contexto de notificación, llamado durante un evento. Esta no es una función real, sólo un prototipo de cómo la función debería ser. &reftitle.parameters; notification_code Una de las constantes de notificación STREAM_NOTIFY_*. severity Una de las constantes de notificación STREAM_NOTIFY_SEVERITY_*. message Pasado si un mensaje descriptivo está disponible para el evento. message_code Pasado si un código de mensaje descriptivo está disponible para el evento. Esto significa que el valor depende de la envoltura específica en uso. bytes_transferred Si se puede aplicar, el parámetro bytes_transferred será rellenado. bytes_max Si se puede aplicar, el parámetro bytes_max será rellenado. &reftitle.returnvalues; &return.void; &reftitle.examples; Ejemplo de <function>stream_notification_callback</function> "stream_notification_callback")); file_get_contents("http://php.net/contact", false, $ctx); ?> ]]> &example.outputs.similar; Barra de progreso sencilla para la descarga por parte del cliente por línea de comandos \n", $argv[0]); exit(1); } function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) { static $filesize = null; switch($notification_code) { case STREAM_NOTIFY_RESOLVE: case STREAM_NOTIFY_AUTH_REQUIRED: case STREAM_NOTIFY_COMPLETED: case STREAM_NOTIFY_FAILURE: case STREAM_NOTIFY_AUTH_RESULT: /* Ignore */ break; case STREAM_NOTIFY_REDIRECTED: echo "Redireccionando a: ", $message, "\n"; break; case STREAM_NOTIFY_CONNECT: echo "Conectado...\n"; break; case STREAM_NOTIFY_FILE_SIZE_IS: $filesize = $bytes_max; echo "Tamaño de archivo: ", $filesize, "\n"; break; case STREAM_NOTIFY_MIME_TYPE_IS: echo "Tipo mime: ", $message, "\n"; break; case STREAM_NOTIFY_PROGRESS: if ($bytes_transferred > 0) { if (!isset($filesize)) { printf("\rTamaño de archivo desconocido.. %2d kb hecho..", $bytes_transferred/1024); } else { $length = (int)(($bytes_transferred/$filesize)*100); printf("\r[%-100s] %d%% (%2d/%2d kb)", str_repeat("=", $length). ">", $length, ($bytes_transferred/1024), $filesize/1024); } } break; } } isset($argv[1], $argv[2]) or usage($argv); $ctx = stream_context_create(); stream_context_set_params($ctx, array("notification" => "stream_notification_callback")); $fp = fopen($argv[1], "r", false, $ctx); if (is_resource($fp) && file_put_contents($argv[2], $fp)) { echo "\n¡Hecho!\n"; exit(0); } $err = error_get_last(); echo "\nErrrrrorr..\n", $err["message"], "\n"; exit(1); ?> ]]> Ejecutar el ejemplo anterior con: php -n fetch.php http://no2.php.net/get/php-5-LATEST.tar.bz2/from/this/mirror php-latest.tar.bz2 imprimirá algo similar a: ] 40% (3076/7590 kb) ]]> &reftitle.seealso;