PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのftp_nb_continue()関数の使い方と戻り値をわかりやすく解説

PHPのftp_nb_continue()関数は、FTPサーバーとの間で行っているファイルの送受信処理を継続させるための関数です。ノンブロッキングモード(非同期処理)でダウンロードやアップロードを実行する際に、この関数を呼び出すことで処理の続きが実行されます。

ftp_nb_get()などの「nb(non-blocking)」系関数を使うと、ファイル転送中でもスクリプトが他の処理を行えるようになります。転送が完了するまでループ内で繰り返し呼び出すのが基本的な使い方です。

構文

ftp_nb_continue(con);

パラメータ

  • con − FTP接続リソース。ftp_connect()で確立したFTP接続を指定します。

戻り値

ftp_nb_continue()関数は、以下のいずれかの値を返します。

  • FTP_FAILED − 送信/受信が失敗したことを示します

  • FTP_FINISHED − 送信/受信が完了したことを示します

  • FTP_MOREDATA − 送信/受信が進行中であることを示します

使用例

以下は、ノンブロッキングモードでファイルをダウンロードし、完了まで処理を継続させる例です。ここでは、ローカルファイルとして「new.txt」、サーバー上のファイルとして「server.txt」を使用しています。

<?php
   $c = ftp_nb_get($ftp_conn, "new.txt", "server.txt", FTP_BINARY)
   while ($c == FTP_MOREDATA) {
      // ダウンロードを継続
      echo "ファイルをダウンロード中です!";
      $d = ftp_nb_continue($ftp_conn);
   }
   if ($c != FTP_FINISHED) {
      echo "ダウンロードが完了していません!";
      exit(1);
   }
?>

ポイント解説

この例では、まずftp_nb_get()でダウンロードを開始し、その戻り値がFTP_MOREDATAである間はwhileループ内でftp_nb_continue()を繰り返し呼び出しています。これにより、転送が完了するまで処理が続行されます。

なお、上記コードでは元のサンプルに存在していた変数名の不整合($sと$c)を修正しています。ループ終了後の判定には、ftp_nb_get()または最後のftp_nb_continue()の戻り値を格納した変数を使用してください。

この仕組みを活用すれば、大きなファイルの転送中に進捗状況の表示など、他の処理を並行して実行することが可能になります。

  1. PHPのdelete()関数とは?使い方とサンプルコードをわかりやすく解説

    PHPのdelete()関数は、指定したファイルを削除するための関数です。削除したいファイルのパスをパラメータとして渡すことで、そのファイルをシステムから削除できます。 構文(Syntax) delete(file_path) パラメータ(Parameters) file_path: 削除したいファイルのパスを指定します。相対パス・絶対パスのどちらでも指定可能です。 戻り値(Return) delete()関数は、処理結果に応じて以下のブール値を返します。 true: ファイルの削除が成功した場合 false: ファイルの削除に失敗した場合(ファイルが存在しない、権限がないなど) 使用

  2. PHPのcopy()関数とは?使い方・パラメータ・実行例をわかりやすく解説

    PHPのcopy()関数は、指定したファイルを別の場所へコピーするための組み込み関数です。この関数を実行すると、コピー元(ソース)ファイルをもとに、コピー先(デスティネーション)として新しいファイルが作成されます。なお、コピー先にすでに同名のファイルが存在する場合は、そのファイルは上書きされる点に注意してください。構文(Syntax)copy(source_file, dest_file)パラメータsource_file − コピー元となるファイルを指定します。dest_file − コピー先のファイルパスを指定します。戻り値(Return値)copy()関数は、処理結果に応じて以下のブール値