関数・クラス解説

stream_notification_callback

version:PHP 5 >= 5.2.0, PHP 7 (公式)

notification コンテキストパラメータ用のコールバック関数

公式リファレンス

書式

stream_notification_callback ( int $notification_code , int $severity , string $message , int $message_code , int $bytes_transferred , int $bytes_max ) : void

説明

イベント発生時にコールされる callable 関数です。 notification context parameter が使用します。

注意:

これは実際の関数では ありません。 コールバック関数がどうあるべきかというプロトタイプだけを示すものです。

パラメータ

notification_code
STREAM_NOTIFY_* 通知定数のひとつ。
severity
STREAM_NOTIFY_SEVERITY_* 通知定数のひとつ。
message
イベントについて説明するメッセージが存在する場合に渡されます。
message_code
イベントについて説明するコードが存在する場合に渡されます。 この値の意味は、使用するラッパーによって異なります。
bytes_transferred
利用可能な場合は bytes_transferred の値が格納されます。
bytes_max
利用可能な場合は bytes_max の値が格納されます。

返値

値を返しません。

サンプル

例1 stream_notification_callback() の例

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);             /* 無視 */             break;         case STREAM_NOTIFY_REDIRECTED:             echo "Being redirected to: ", $message;             break;         case STREAM_NOTIFY_CONNECT:             echo "Connected...";             break;         case STREAM_NOTIFY_FILE_SIZE_IS:             echo "Got the filesize: ", $bytes_max;             break;         case STREAM_NOTIFY_MIME_TYPE_IS:             echo "Found the mime-type: ", $message;             break;         case STREAM_NOTIFY_PROGRESS:             echo "Made some progress, downloaded ", $bytes_transferred, " so far";             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);

上の例の出力は、たとえば以下のようになります。

Connected... Found the mime-type: text/html; charset=utf-8 Being redirected to: http://no.php.net/contact Connected... Got the filesize: 0 Found the mime-type: text/html; charset=utf-8 Being redirected to: http://no.php.net/contact.php Connected... Got the filesize: 4589 Found the mime-type: text/html;charset=utf-8 Made some progress, downloaded 0 so far Made some progress, downloaded 0 so far Made some progress, downloaded 0 so far Made some progress, downloaded 1440 so far Made some progress, downloaded 2880 so far Made some progress, downloaded 4320 so far Made some progress, downloaded 5760 so far Made some progress, downloaded 6381 so far Made some progress, downloaded 7002 so far

例2 コマンドラインのダウンロードツール用のシンプルなプログレスバー

function usage($argv) {     echo "Usage:\n";     printf("\tphp %s  \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:         /* 無視 */         break;     case STREAM_NOTIFY_REDIRECTED:         echo "Being redirected to: ", $message, "\n";         break;     case STREAM_NOTIFY_CONNECT:         echo "Connected...\n";         break;     case STREAM_NOTIFY_FILE_SIZE_IS:         $filesize = $bytes_max;         echo "Filesize: ", $filesize, "\n";         break;     case STREAM_NOTIFY_MIME_TYPE_IS:         echo "Mime-type: ", $message, "\n";         break;     case STREAM_NOTIFY_PROGRESS:         if ($bytes_transferred > 0) {             if (!isset($filesize)) {                 printf("\rUnknown filesize.. %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 "\nDone!\n";     exit(0); } $err = error_get_last(); echo "\nErrrrrorr..\n", $err["message"], "\n"; exit(1);

上の例を php -n fetch.php http://no2.php.net/get/php-5-LATEST.tar.bz2/from/this/mirror php-latest.tar.bz2 のように実行すると、次のような出力となります。

Connected... Mime-type: text/html; charset=utf-8 Being redirected to: http://no2.php.net/distributions/php-5.2.5.tar.bz2 Connected... Filesize: 7773024 Mime-type: application/octet-stream [========================================> ] 40% (3076/7590 kb)

参考

  • コンテキストパラメータ
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール