人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについて質問です。

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

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

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

●質問者: taroemon
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:firefox FTP PHP VISTA XAMPP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mulloo
●10ポイント

レジューム機能をつかう


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

◎質問者からの返答

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

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


2 ● pahoo
●60ポイント

「中断されたところから再開する方法」について、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); 
◎質問者からの返答

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

大変参考になりました。


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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ