查询

stream_notification_callback()函数—用法及示例

「 处理流通知的回调函数 」


函数名称:stream_notification_callback()

函数描述:该函数用于处理流通知的回调函数。

适用版本:PHP 4 >= 4.3.0, PHP 5, PHP 7

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

参数:

  • $notification_code:通知代码,表示不同的通知类型,例如STREAM_NOTIFY_CONNECT、STREAM_NOTIFY_AUTH_REQUIRED等。
  • $severity:表示通知的严重程度,例如STREAM_NOTIFY_SEVERITY_INFO、STREAM_NOTIFY_SEVERITY_WARN等。
  • $message:通知消息的字符串描述。
  • $message_code:通知消息的代码。
  • $bytes_transferred:已传输的字节数。
  • $bytes_max:最大传输字节数。

返回值:无返回值。

示例:

function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
    switch ($notification_code) {
        case STREAM_NOTIFY_CONNECT:
            echo "连接建立成功!\n";
            break;
        case STREAM_NOTIFY_AUTH_REQUIRED:
            echo "需要进行身份验证!\n";
            break;
        case STREAM_NOTIFY_AUTH_RESULT:
            echo "身份验证结果:$message\n";
            break;
        case STREAM_NOTIFY_FILE_SIZE_IS:
            echo "文件大小:$bytes_max 字节\n";
            break;
        case STREAM_NOTIFY_PROGRESS:
            echo "已传输字节数:$bytes_transferred / $bytes_max\n";
            break;
        case STREAM_NOTIFY_COMPLETED:
            echo "传输完成!\n";
            break;
        case STREAM_NOTIFY_FAILURE:
            echo "传输失败!\n";
            break;
        case STREAM_NOTIFY_RESOLVE:
            echo "正在解析主机信息...\n";
            break;
        case STREAM_NOTIFY_MIME_TYPE_IS:
            echo "MIME 类型:$message\n";
            break;
        default:
            echo "未知通知类型\n";
            break;
    }
}

$stream_context = stream_context_create();
stream_context_set_params($stream_context, ['notification' => 'stream_notification_callback']);

$file = fopen('http://example.com', 'r', false, $stream_context);

在上面的示例中,我们定义了一个名为stream_notification_callback的回调函数来处理流通知。该函数根据传入的notification_code参数判断不同的通知类型,并进行相应的处理。在打开一个URL资源时,我们通过stream_context_create()函数创建了一个流上下文,然后使用stream_context_set_params()函数设置了notification参数为我们定义的回调函数。最后,我们使用fopen()函数打开了一个URL资源,并触发了相应的通知,通过回调函数输出了相应的信息。

补充纠错
上一个函数: stream_register_wrapper()函数
下一个函数: stream_is_local()函数
热门PHP函数
分享链接