PHPのftp_nb_put()関数とは?構文・パラメータ・戻り値と実装例を解説
ftp_nb_put()関数は、ローカルファイルをFTPサーバーへ非同期(ノンブロッキング)でアップロードするためのPHP関数です。通常のftp_put()関数と異なり、転送の進行中にもスクリプト側で他の処理を実行できる点が大きな特徴です。
構文
ftp_nb_put(con, remote_file, local_file, transfer_mode, beg_pos);
パラメータ
con −
ftp_connect()で取得したFTP接続リソースremote_file − アップロード先となるサーバー上のファイルパス
local_file − アップロードするローカルファイルのパス
transfer_mode − 転送モード。以下のいずれかの値を指定します。
-
FTP_ASCII(アスキーモード)、または-
FTP_BINARY(バイナリモード)beg_pos − 転送を開始する位置(オフセット)。省略可能です。
戻り値
ftp_nb_put()関数は、以下のいずれかの値を返します。
FTP_FAILED − 送受信が失敗した
FTP_FINISHED − 送受信が完了した
FTP_MOREDATA − 送受信が進行中である
ノンブロッキング方式では、転送が完了するまでFTP_MOREDATAが返され続けるため、ftp_nb_continue()を呼び出して転送を継続させるループ処理が必要になります。
使用例
以下は、ftp_nb_put()関数を使ってファイルをFTPサーバーへアップロードする例です。
<?php
$ftp_server = "192.168.0.4";
$ftp_user = "jacob";
$ftp_pass = "tywg61gh";
$con = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($con, $ftp_user, $ftp_pass);
$local_file = "new.txt";
$my_serverfile = "serverfile.txt";
$c = ftp_nb_put($con, $my_serverfile, $local_file, FTP_BINARY);
while ($c == FTP_MOREDATA) {
// アップロードを継続
$c = ftp_nb_continue($con);
}
if ($c != FTP_FINISHED){
echo "サーバーへのアップロード中にエラーが発生しました!";
exit(1);
}
// 接続を閉じる
ftp_close($con);
?>
この例では、まずftp_connect()とftp_login()でFTPサーバーに接続・ログインし、その後ftp_nb_put()でアップロードを開始しています。戻り値がFTP_MOREDATAの間はftp_nb_continue()で転送を続け、FTP_FINISHEDになれば完了です。最後にftp_close()で接続を閉じて処理を終了します。
-
PHPのftp_cdup()関数とは?使い方とサンプルコードを解説
ftp_cdup()関数は、FTPサーバー上の現在のディレクトリを、その親ディレクトリ(1階層上のディレクトリ)へ変更します。サブディレクトリで作業中に、上位の階層へ戻りたい場合に便利な関数です。 構文 ftp_cdup(con); パラメータ con − FTP接続のリソース(ftp_connect()で取得した接続)を指定します。 戻り値 ftp_cdup()関数は、ディレクトリの移動に成功した場合にTRUEを、失敗した場合にFALSEを返します。戻り値を判定することで、移動が正しく行われたかどうかを確認できます。 使用例 以下は、現在のディレクトリを親ディレクトリへ移動させる
-
PHPのftp_alloc()関数とは?使い方とサンプルコードを解説
ftp_alloc() 関数は、FTPサーバーにファイルをアップロードする前に、そのファイル用のディスクスペースを事前に確保するための関数です。内部的にはFTPの「ALLO」コマンドを送信し、サーバー側に十分な空き容量が存在するかどうかを確認できます。対応していないサーバーもありますが、大きなファイルを扱う際にはアップロード失敗の防止に役立ちます。 構文 ftp_alloc(connection, size_of_file, res); パラメータ connection − 使用するFTP接続(ftp_connect() で取得した接続リソース) size_of_file − 確保する容量(