-1

Agotime関数を設定しました。時間の更新をライブにするためにどのような方法を使用すればよいのか疑問に思っています。多くの人がAjaxと言うでしょうが、これはサーバーが重いのでしょうか?5秒ごとにスムーズに交換する必要があります。

また、どうすればこれを行うことができますか?

 function Agotime($date)

    {
        if(empty($date)) {
            return "No date provided";
        }

        $periods         = array("second", "minute", "hour", "day", "week", "month", "year", "decade");
        $lengths         = array("60","60","24","7","4.35","12","10");

        $now             = time();
        $unix_date       = strtotime($date);

           // check validity of date
        if(empty($unix_date)) {    
            return "Bad date";
        }

        // is it future date or past date
        if($now > $unix_date) {    
            $difference     = $now - $unix_date;
            $tense         = "ago";

        } else {
            $difference     = $unix_date - $now;
            $tense         = "from now";
        }

        for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++) {
            $difference /= $lengths[$j];
        }

        $difference = round($difference);

        if($difference != 1) {
            $periods[$j].= "s";
        }

        return "$difference $periods[$j] {$tense}";

    }
4

2 に答える 2

2

2 つの方法のいずれかで実装できます。

あなたが提案したように、AJAXを使用して、PHPスクリプトにクエリを実行して、それがどれくらい前のものかを調べることができます。ただし、これはリクエストの数に大きく影響する可能性があります。

関数を Javascript で実装し、ロード時にタイムスタンプをスクリプトに渡すだけです。この方法では、サーバーへのリクエストを行う必要がなく、時刻をライブで更新し続けることができます。もちろん、これはタイムスタンプが変更されないことを前提としています。

Javascript で簡単に計算でき、多くのネットワーク トラフィックを回避できるため、個人的にはオプション 2 を選択します。

于 2012-08-08T15:40:10.937 に答える
1

最良のオプションは、インクリメントする日付を渡し、setTimeout を使用して 5 秒ごとに起動することです

次に、必要に応じて「チェック」を実行して、サーバーの時刻がブラウザーの時刻と一致することを確認し、X 更新ごとに ajax 呼び出しを使用して日付/時刻を「再同期」します。

于 2012-08-08T15:40:30.493 に答える