stream_notification_callback
(PHP 5 >= 5.2.0)
stream_notification_callback — Une fonction de rappel pour le paramètre de contexte notification
Description
$notification_code
   , int $severity
   , string $message
   , int $message_code
   , int $bytes_transferred
   , int $bytes_max
   )Une fonction de rappel de type callable, utilisée par le paramètre de contexte notification, appelé lors d'un événement.
Note:
Ce n'est pas une réelle fonction, uniquement un prototype de la façon dont la fonction doit être.
Liste de paramètres
- 
     notification_code
- 
      Une des constantes de notification STREAM_NOTIFY_*.
- 
     severity
- 
      Une des constantes de notification STREAM_NOTIFY_SEVERITY_*.
- 
     message
- 
      Passé si un message descriptif est disponible pour cet événement. 
- 
     message_code
- 
      Passé si un code de message descriptif est disponible pour cet événement. La signification de cette valeur dépend du gestionnaire spécifique utilisé. 
- 
     bytes_transferred
- 
      Si c'est possible, bytes_transferredsera rempli.
- 
     bytes_max
- 
      Si c'est possible, bytes_maxsera rempli.
Valeurs de retour
Aucune valeur n'est retournée.
Exemples
Exemple #1 Exemple avec stream_notification_callback()
<?php
function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
	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:
			var_dump($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max);
			/* Ignore */
			break;
		case STREAM_NOTIFY_REDIRECTED:
			echo "Redirection vers : ", $message;
			break;
		case STREAM_NOTIFY_CONNECT:
			echo "Connecté...";
			break;
		case STREAM_NOTIFY_FILE_SIZE_IS:
			echo "Récupération de la taille du fichier : ", $bytes_max;
			break;
		case STREAM_NOTIFY_MIME_TYPE_IS:
			echo "Type mime trouvé : ", $message;
			break;
		case STREAM_NOTIFY_PROGRESS:
			echo "En cours de téléchargement, déjà ", $bytes_transferred, " octets transférés";
			break;
	}
	echo "\n";
}
$ctx = stream_context_create();
stream_context_set_params($ctx, array("notification" => "stream_notification_callback"));
file_get_contents("http://php.net/contact", false, $ctx);
?><?php
function usage($argv) {
	echo "Utilisation :\n";
	printf("\tphp %s <http://example.com/file> <localfile>\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 "Redirection vers : ", $message, "\n";
		break;
	case STREAM_NOTIFY_CONNECT:
		echo "Connecté...\n";
		break;
	case STREAM_NOTIFY_FILE_SIZE_IS:
		$filesize = $bytes_max;
		echo "Taille du fichier : ", $filesize, "\n";
		break;
	case STREAM_NOTIFY_MIME_TYPE_IS:
		echo "Type Mime : ", $message, "\n";
		break;
	case STREAM_NOTIFY_PROGRESS:
		if ($bytes_transferred > 0) {
			if (!isset($filesize)) {
				printf("\rTaille du fichier inconnue.. %2d kb done..", $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 "\nFait !\n";
	exit(0);
}
$err = error_get_last();
echo "\nErrrrreurr..\n", $err["message"], "\n";
exit(1);
?>Exécutez l'exemple ci-dessus avec : php -n fetch.php http://no2.php.net/get/php-5-LATEST.tar.bz2/from/this/mirror php-latest.tar.bz2 affichera quelque chose similaire à :
Connecté... Type Mime : text/html; charset=utf-8 Redirection vers : http://no2.php.net/distributions/php-5.2.5.tar.bz2 Connecté... Taille du fichier : 7773024 Type Mime : application/octet-stream [========================================> ] 40% (3076/7590 kb)
