Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】CURLMOPT_PUSHFUNCTION定数の使い方

CURLMOPT_PUSHFUNCTION定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

CURLMOPT_PUSHFUNCTION定数は、PHPのcURL拡張機能において、HTTP/2プロトコルにおけるServer Push機能に関連する設定を行うための定数です。この定数は、複数のcURL転送を並行して管理する際に使用するマルチハンドル(curl_multi_*系の関数)に対して、オプションを設定するcurl_multi_setopt関数で使用されます。特に、ウェブサーバーがクライアントからのリクエストを待つことなく、将来必要になると予測されるリソースを先行してプッシュ送信してきた際に、そのプッシュされた転送をどのように処理するかを決定するためのコールバック関数を指定するために用いられます。

この定数を用いてコールバック関数を設定すると、Server Pushイベントが発生した際に、開発者が定義したPHP関数が自動的に呼び出されます。このコールバック関数は、プッシュされたリソースの転送を受け入れるか、あるいは拒否するかをプログラマブルに判断する役割を担います。具体的には、コールバック関数は、元の転送を管理しているcURLハンドル、新しくプッシュされた転送を管理するcURLハンドル、そしてユーザーがオプション設定時に渡した任意のデータという3つの引数を受け取ります。コールバック関数がCURL_PUSHDATA_OKを返すと、プッシュされた転送が続行され、CURL_PUSHDATA_NOを返すと、そのプッシュはキャンセルされて転送は行われません。

このように、CURLMOPT_PUSHFUNCTION定数は、HTTP/2環境下でServer Pushを効率的に制御し、アプリケーションのパフォーマンスを最適化するために不可欠な機能を提供します。不要なリソースの転送を拒否することで、ネットワークリソースの無駄を省き、セキュリティ面でのリスクも軽減できるため、このオプションの適切な利用は、より堅牢で効率的なウェブアプリケーションの構築に貢献します。ただし、Server PushはHTTP/2でのみ有効な機能であり、それ以外のプロトコルや対応していない環境ではこのオプションは効果を発揮しない点にご注意ください。

構文(syntax)

1<?php
2curl_multi_setopt(
3    $curl_multi_handle,
4    CURLMOPT_PUSHFUNCTION,
5    function (
6        $parent_ch,
7        $new_ch,
8        $request_len,
9        $request_body,
10        $request_headers
11    ): int {
12        // ... HTTP/2 Push ストリームの処理ロジック ...
13        return 1; // 1: プッシュを受け入れる, 0: 拒否する
14    }
15);

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ