PHPについて質問です。


レンタルサーバー上でファイルを作成したり、FTP送信するとき
それほど大量のデータをやりとりしているわけでもないのに、
途中で作業が中断されてしまいます。
PHPでなくてもFTP送信する際、途中で作業が中断されてしまうので、
それはサーバーの仕様としてあきらめるしかありません。

たとえばsleepで作業をいったん停止するとか、
中断されたところから再開するとかの方法が考えられますが、
一般的にこの問題を解決するにはどのような方法をとるのでしょうか?

Vista,PHP5,XAMPP,Firefoxという環境でやっています。
以上、よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/11/27 02:50:04
  • 終了:2008/11/27 22:09:51

回答(2件)

id:mulloo No.1

mulloo回答回数151ベストアンサー獲得回数22008/11/27 04:27:47

ポイント10pt

レジューム機能をつかう


http://php.plus-server.net/ftp.constants.html

id:taroemon

ご回答ありがとうございます。

実際に動くスクリプトを用いて解説していただければさらに参考になります。

2008/11/27 10:11:06
id:pahoo No.2

pahoo回答回数5960ベストアンサー獲得回数6332008/11/27 10:51:54

ポイント60pt

「中断されたところから再開する方法」について、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); 
id:taroemon

ご回答ありがとうございます。

大変参考になりました。


公にできないことがありましたので、ポイント送信からメッセージを送りました。

お時間のあるときにご確認ください。

2008/11/27 10:54:44
  • id:taroemon
    質問文に書き忘れましたが、
    レンタルサーバーを変えるというご回答はご遠慮ください。

    あと一般的な解決法が「中断されたところから再開する方法」だった場合
    具体的にはどのようにスクリプトにすれば良いかわかりません。
    可能でしたら、実際に動くスクリプトを用いて解説していただければさらに参考になります。
    以上、よろしくお願いします。
  • id:pahoo
    taroemon > お時間のあるときにご確認ください。
    メッセージをいただきました。ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません