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

ディレクトリAの下にA1,A2,A3,...があります。A1,A2,A3,..にファイルをアップロードしていきます。”最後にアップロードしてから31分です”というメッセージを表示させたいと思います。コードは以前の質問のコメントに基づいて修正しました。そのindex.phpをアップロードすると正常にアップロード後の時間が表示されます。その後A1にファイルをアップロードしました。しかし表示される時間がリセットされません。どうしたらよいでしょうか。

●質問者: webster2
●カテゴリ:コンピュータ インターネット
✍キーワード:A1 A3 INDEX PHP アップロード
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● gekikawa
●27ポイント

はじめまして

前問のスクリプト拝見しました。

これは結局ディレクトリの更新時間を比較しているのですよね?

A1にファイルをアップしたとのことですが、FTPソフトで見た場合に

A1の更新時刻は変化しているのでしょうか?

これが変わっていなければ、表示される時間もリセットされません。

そういった環境的な要因が原因なのではないでしょうか?

◎質問者からの返答

各ディレクトリごとに()

というのを別個に書いてありまして、それは更新されています。


2 ● GreenStar
●27ポイント

あのプログラムはディレクトリに対して行われています。


ディレクトリ内のファイルを更新しても、ディレクトリの日時は更新されないという事です。

従って、あのプログラムでは目的を達成できません。


ファイルの更新日時を探るほうのプログラムで対応することになりますが、それはまた別の話なので、ここでは行いませんが、コメント欄にも書きました通り返事が無いのでどうしようもない状態です。

◎質問者からの返答

どの質問でしょうか


3 ● rouge_2008
●26ポイント

difmtime関数の処理を以下のように変更してみてください。

※2行コメントアウトして、代わりに2行追加しています。(変更点は、コード内のコメントを確認してください。)

function difmtime($path, $level=3) {
$now = time();
$mtime = filemtime($path);
$dtime = $now - $mtime;
if (0 < $level--) {
foreach (glob($path . "/*") as $file) {
if (is_dir($file)) {
$subtime = dirmtime($file, $level);
//if ($dtime > $subtime) {
if ($mtime < $subtime) { //※上記コメントアウトして代わりに追加※
//$dtime = $subtime;
$dtime = $now - $subtime; //※上記コメントアウトして代わりに追加※
// printf("(%02d) %s %s<br />\n", $level, dhhmmss($dtime), $file);
}
}
}
}
return $dtime;
}

少ししか動作確認していませんが、おそらくこれで大丈夫だと思います。

◎質問者からの返答

あなたは神さまです

関連質問


●質問をもっと探す●



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