PHP を介して FTP サーバーにブレークポイント再開転送を実装する方法
ネットワーク送信の需要が高まるにつれ、ファイル転送においてブレークポイント再開機能が非常に重要になってきました。大きなファイルをアップロードしている場合でもダウンロードしている場合でも、アップロードを再開すると時間と帯域幅を節約できます。 PHP では、FTP 関数ライブラリとカスタム コードを使用して、FTP サーバーにブレークポイント再開関数を実装できます。以下は、PHP で FTP サーバーにブレークポイント再開を実装する方法のサンプル コードです。
最初に、への接続を設定する必要があります。 FTP サーバーのパラメーター (FTP サーバーのホスト名、ユーザー名、パスワード、ポート番号など)。 PHP では、ftp_connect()
関数を使用して FTP サーバーとの接続を確立し、ftp_login()
関数を使用してログイン検証を行うことができます。サンプル コードは次のとおりです。
$ftp_server = 'ftp.example.com'; $ftp_username = 'username'; $ftp_password = 'password'; $ftp_port = 21; $ftp_conn = ftp_connect($ftp_server, $ftp_port); $ftp_login = ftp_login($ftp_conn, $ftp_username, $ftp_password); if (!$ftp_conn || !$ftp_login) { die('FTP connection failed'); }
アップロードを再開する前に、リモート ファイルが存在するかどうかを確認する必要があります。リモート ファイルが存在する場合、ダウンロードされたファイルのサイズに基づいて、再開する必要がある開始位置を計算できます。 PHP では、ftp_size()
関数を使用してリモート ファイルのサイズを取得できます。サンプルコードは以下のとおりです。
$remote_file = '/path/to/remote/file.ext'; $local_file = '/path/to/local/file.ext'; if (ftp_size($ftp_conn, $remote_file) !== -1) { $resume_pos = filesize($local_file); } else { $resume_pos = 0; }
先ほどの計算により、送信再開開始位置をDownloadedに設定できます。ファイルサイズ。 PHP では、ftp_raw()
関数を使用して特定の FTP コマンドを送信し、ブレークポイント再開転送の開始位置を設定できます。サンプル コードは次のとおりです。
$command = "REST $resume_pos"; ftp_raw($ftp_conn, $command);
ブレークポイント再開の設定が完了したら、ftp_fget()
を使用できます。リモートファイルをダウンロードする機能。 PHP では、ftp_fget()
関数を使用してリモート ファイルの一部をローカル ファイルに書き込むことができ、ダウンロードの開始位置を制御することもできます。サンプル コードは次のとおりです。
$local_file_handle = fopen($local_file, 'ab'); $remote_file_handle = fopen("ftp://$ftp_username:$ftp_password@$ftp_server/$remote_file", 'rb'); if ($local_file_handle && $remote_file_handle) { fseek($local_file_handle, $resume_pos); while (!feof($remote_file_handle)) { fwrite($local_file_handle, fread($remote_file_handle, 1024)); } fclose($remote_file_handle); fclose($local_file_handle); }
要約すると、上記の 4 つの手順を通じて、PHP の FTP サーバーにブレークポイント再開機能を実装できます。これにより、時間と帯域幅が節約され、ファイル転送の効率が向上します。実際のニーズに応じてコードを調整および改善して、より柔軟で効率的なブレークポイント再開機能を実現できます。
以上がPHP を使用して FTP サーバーにブレークポイント再開を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。