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

PHPの質問です。
外部サーバ上のデータの差分のみをダウンロードする方法を教えてください。

1. 外部FTPサーバ上に、テキストファイルAが置いてあります。
2. ローカルサーバには、AのコピーであるA’が置いてあります。
3. Aには随時文字列が追記されていきます。(かなりの頻度で)

この条件で、AとA’の差分を取得したいのですが、
効率のよい方法はありますか?

・全体をダウンロードして比較する【以外】の回答をお願いします。
・【PHPではできません】という内容はコメント欄にお願いします。
・【○○○ならできます】という内容であれば回答欄にてご教授ください。
ただし、実行に手間がかかるものは不可とさせてください。
(30秒おきに自動実行・・みたいなものが理想です)

外部FTPサーバ
Apache たぶん1.3系。その他詳細不明。
PHPなどは設置できません。基本的にはいじれません。

ローカル環境
WindowsXP Pro SP3
Apache 2.2系(変更可)
PHP 5.x
拡張モジュール、その他ツールなどは自由に入れられます。


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

▽最新の回答へ

1 ● ぱこち
●99ポイント ベストアンサー

普通に ftp_get でダウンロード開始位置を指定してダウンロードするのでは駄目なのでしょうか。

<?php
$ftp_server = 'FTP サーバ';
$ftp_user_name = '名前';
$ftp_user_pass = 'パスワード';

$remote_file = "./log.txt";
$local_file = "./log.txt";
$local_file_size = filesize($local_file);
$local_diff_file = "./diff.txt";

$conn_id = ftp_connect($ftp_server, 21, 120); 
if (!$conn_id) exit("{$ftp_server} に接続できませんでした。");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (!$login_result) exit("{$ftp_server} に接続できませんでした。");

ftp_get($conn_id, $local_file, $remote_file, FTP_BINARY, $local_file_size);

ftp_close($conn_id);

$local_diff = file_get_contents($local_file, false, NULL, $local_file_size);
file_put_contents($local_diff_file, $local_diff);

?>

Aが $remote_file 、A’が $local_file、差分が $local_diff および $local_diff_file です。

◎質問者からの返答

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


今、リファレンスを確認しました。。ダメじゃない気がします。

質問する前に読んだつもりなんですが、見落としていたようです。

お恥ずかしい…


とりあえずこれで試してみます。


---

追記


できました。完璧です!

resumeposを指定すると、追加分だけをマージしてくれるんですね。

知らなかったことがたくさん。ありがとうございました。

関連質問


●質問をもっと探す●



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