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

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/04/10 19:36:22
  • 終了:2010/04/17 19:40:02

回答(3件)

id:gekikawa No.1

gekikawa回答回数110ベストアンサー獲得回数112010/04/10 20:32:24

ポイント27pt

はじめまして

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

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

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

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

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

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

id:webster2

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

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

2010/04/10 20:40:33
id:GreenStar No.2

GreenStar回答回数192ベストアンサー獲得回数462010/04/10 20:59:27

ポイント27pt

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


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

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


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

id:webster2

どの質問でしょうか

2010/04/10 21:08:01
id:rouge_2008 No.3

rouge_2008回答回数594ベストアンサー獲得回数3512010/04/10 21:39:58

ポイント26pt

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;
}

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

id:webster2

あなたは神さまです

2010/04/10 22:16:09
  • id:Bombastus
    質問者様へ
    新規質問するのは自由ですが、過去の質問をいったんクローズしてからにしていただけませんか?
  • id:rouge_2008
    以前の質問のコメントに書きましたが、OSの種類によってはファイルの更新時間が反映されない事もあるようです。
    使用しているサーバーのOSは分かりますか?
    レンタルサーバーのHPで、FAQやサーバーの仕様詳細ページを確認してみてください。
  • id:webster2
    *各ディレクトリごとに(<?php echo date("m/d H:i",filemtime("A1"));?>)

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

    *サーバーはhttp://www.kattare.comです。よろしくお願いします。
  • id:rouge_2008
    解決したようでおめでとうございます。

    ただ、こちらの場合はファイルを削除した場合にも反映されてしまうようですね。(^^;
    以下でコメントさせていただきましたのでご確認ください。
    http://q.hatena.ne.jp/1270519679#c176453

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

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

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

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