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

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

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

作成日: 更新日:

基本的な使い方

CURLOPT_XFERINFOFUNCTION定数は、PHPのcURL拡張機能において、ネットワーク経由でのデータ転送の進捗状況を監視するためのコールバック関数を設定するために使用される定数です。この定数に指定するコールバック関数は、cURLがデータを転送している間に定期的に呼び出されます。

システムエンジニアがウェブサービスや外部APIと連携する際、ファイルのダウンロードやアップロードなど、時間がかかる可能性のある処理を実行することがあります。このような場合、ユーザーに対して処理の進行状況をリアルタイムで表示したり、特定の条件に基づいて転送を中断したりする必要が生じます。CURLOPT_XFERINFOFUNCTION定数はこの目的のために非常に有用です。

この定数によって設定されるコールバック関数には、転送されたデータのバイト数や、転送されるべきデータの合計バイト数など、進捗に関する詳細な情報が引数として渡されます。例えば、ダウンロードの場合、これまでに受信したバイト数と合計のダウンロードサイズを受け取ることができ、アップロードの場合も同様に、送信済みバイト数と合計アップロードサイズが得られます。

コールバック関数内でこれらの情報に基づいて処理を行い、必要に応じて進捗バーの更新やログへの記録などを行うことが可能です。また、コールバック関数がゼロ以外の値を返すと、その時点でcURLによるデータ転送は中断されます。これにより、ユーザーの操作や特定の条件に応じて転送処理を制御する柔軟性が提供されます。curl_setopt()関数と組み合わせて使用することで、cURLハンドルにこのコールバック関数を登録します。

構文(syntax)

1<?php
2
3function myTransferProgressCallback(resource $ch, int $downloadTotal, int $downloadNow, int $uploadTotal, int $uploadNow): int
4{
5    // 転送進捗情報をここで処理
6    return 0; // 0を返すと転送を継続、0以外を返すと転送を中断
7}
8
9$ch = curl_init();
10
11curl_setopt($ch, CURLOPT_URL, 'https://www.example.com/some_large_file.zip');
12curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
13curl_setopt($ch, CURLOPT_NOPROGRESS, false); // このオプションを false に設定して、CURLOPT_XFERINFOFUNCTION を有効にする必要があります
14curl_setopt($ch, CURLOPT_XFERINFOFUNCTION, 'myTransferProgressCallback');
15
16curl_exec($ch);
17
18curl_close($ch);
19
20?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ