質問: PHPについて質問です。 レンタルサーバー上でファイルを作成したり、FTP送信するとき それほど大量のデータをやりとりしているわけでもないのに、 途中で作業が中断されてしまいます。 PHPでなくてもFTP送信する際、途中で作業が中断されてしまうので、 それはサーバーの仕様としてあきらめるしかありません。 たとえばsleepで作業をいったん停止するとか、 中断されたところから再開するとかの方法が考えられますが、 一般的にこの問題を解決するにはどのような方法をとるのでしょうか? Vista,PHP5,XAMPP,Firefoxという環境でやっています。 以上、よろしくお願いします。
回答: 「中断されたところから再開する方法」について、FTP GET(ダウンロード)のためのサンプル・プログラムを示します。PUTの場合は逆です――ftp_nb_putを使ってください。 $ftp_server:FTPサーバ名 $ftp_user_name:ログイン・ユーザー名 $ftp_user_pass:ログイン・パスワード $remote_filename:GETしたいリモートのファイル名 $local_filename:セーブするローカルのファイル名 ``` $ftp_id = ftp_connect($ftp_server); $ftp_res = ftp_login($ftpid, $ftp_user_name, $ftp_user_pass); // 接続できたか確認する if ((! $ftp_id) || (! $ftp_res)) { echo 'FTP接続に失敗しました'; exit(1); } // AUTO RESUMEを有効にする(デフォルトONなので明記しなくてもOK) ftp_set_option($ftp_id, FTP_AUTOSEEK, TRUE); // FTP GET 開始 $ret = ftp_nb_get($ftp_id, $local_filename, $remote_filename, FTP_BINARY, filesize($localfilename)); // FTP GET 継続 while ($ret == FTP_MOREDATA) { $ret = ftp_nb_continue($ftp_id); //無限ループに陥るので、適当な終了条件を記載してください。 } if ($ret != FTP_FINISHED) { echo 'FTP GETに失敗しました'; exit(1); } echo 'FTP GETに成功しました'; ftp_close($ftp_id); ```