FTP サーバーからファイルをダウンロードし、オープン中のファイルに保存する（非ブロッキング）

# ftp_nb_fget

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ftp_nb_fget — FTP サーバーからファイルをダウンロードし、オープン中のファイルに保存する（非ブロッキング）

### 説明

function ftp_nb_fget(
FTP\Connection `$ftp`,
resource `$stream`,
string `$remote_filename`,
int `$mode` = `FTP_BINARY`,
int `$offset` = 0
): int

ftp_nb_fget() は、FTP サーバーからリモートファイルを取得します。

ftp_fget() との違いは、この関数が 非同期処理でファイルを取得するということです。そのため、 ファイルをダウンロードしている最中に別の処理を行うことができます。

### パラメータ

`ftp`
  FTP\Connection クラスのインスタンス
`stream`

  オープンされているファイルのポインタ。ここにデータが保存されます。

`remote_filename`

  リモートファイルのパス。

`mode`

  転送モード。`FTP_ASCII` または `FTP_BINARY` のどちらかを指定する必要があります。

`offset`

  ダウンロードを開始する、リモートファイル内の位置。

### 戻り値

`FTP_FAILED`、`FTP_FINISHED` あるいは `FTP_MOREDATA` を返します。

### 変更履歴

バージョン | 説明
--- | ---
8.1.0 | 引数 `ftp` は、FTP\Connection のインスタンスを期待するようになりました。 これより前のバージョンでは、resource を期待していました。
7.3.0 | `mode` パラメータはオプションになりました。 これより前のバージョンでは、このパラメータは必須でした。

### 例

例1 ftp_nb_fget() の例

    <?php

    // 書き込み用にファイルをオープンする
    $file = 'index.php';
    $fp = fopen($file, 'w');

    $ftp = ftp_connect($ftp_server);

    $login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);

    // ダウンロードを開始する
    $ret = ftp_nb_fget($ftp, $fp, $file, FTP_BINARY);
    while ($ret == FTP_MOREDATA) {

       // 何かお好みの動作を
       echo ".";

       // ダウンロードを継続する…
       $ret = ftp_nb_continue($ftp);
    }
    if ($ret != FTP_FINISHED) {
       echo "There was an error downloading the file...";
       exit(1);
    }

    // ファイルポインタを閉じる
    fclose($fp);
    ?>

### 参考

- ftp_nb_get() - FTP サーバーからファイルを取得し、ローカルファイルに書き込む（非ブロッキング）
- ftp_nb_continue() - ファイルの取得/送信を継続する（非ブロッキング）
- ftp_fget() - FTP サーバーからファイルをダウンロードし、オープン中のファイルに保存する
- ftp_get() - FTP サーバーからファイルをダウンロードする

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open