0

私はこれについてかなりの量の調査を行っており、いくつかのコードを使用してこれを機能させる方法を知りましたが、思ったように機能していないか、まったく機能していません。

コードは次のとおりです。

<?php
$time1 = $user['last_active'];
$time2 = "+5 minutes";
   if (strtotime($time1) > strtotime($time2)) {
      echo "Online!";
   }else{
      echo "Offline!";  
   }
?>

2 つの変数を比較し、最後のアクティブな変数が 5 分より長いか短いかを調べ、5 分より長い場合はオフラインと表示することになっています。NOW()ユーザーがログインしていない場合、各ページの更新と停止が発生するため、何が問題なのかわかりません。何か提案やヘルプはありますか? ありがとう。

変数は、各ページで更新される情報を$time1取得するフェッチされた配列から取得されます。['last_active']

コードを修正しましたが、まだ正しく動作しません。

<?php
$first  = new DateTime();
$second = new DateTime($user['last_active']);
$diff = $first->diff( $second );
$diff->format( '%H:%I:%S' );
if($diff->format( '%H:%I:%S' ) > (strtotime("5 minutes"))){
echo "Offline";
}else{
echo "Online";
}
?>

この時点で何ができますか?

4

2 に答える 2

1

実際にバグがあることを誰も指摘していません。「現在時刻」が「現在時刻 +5 分」より大きくなることはありません。

代わりに「-5 分」を「オンラインしきい値」として使用すると、最初のコード サンプルは正しく機能します。

また、2 番目のコードで行うように、日付のないタイムスタンプを strtotime() の出力と比較することは、適切な比較ではありません。これには 2 つの問題があります。

  • 新しい日が来るたびに、同じ時間値が繰り返されます。

  • strtotime の出力は、エポックからの秒数を表す整数です。format() の出力は、現在の日付内の時間:分:秒のテキスト表現です。

于 2013-05-09T18:43:09.103 に答える
0

2 つの日付 / 時刻の間の時間を計算する方法については、次の投稿の解決策を参照してください。十分な情報が得られるはずです。(複製 ? )

PHPで経過時間を計算する

そしてここ

PHPで時差を分単位で取得する方法

自由に編集してください

<?
$first = new DateTime(); // this would hold your [last active]
//$first->modify("-6 minutes");
$second = new DateTime("NOW");
$difference = $second->diff( $first ); // second diff first
if ($difference->format('%i') > 5) { // comparing minutes only in example ( %i )
 echo "The user is AFK";
} else {
 echo "user might still be active";
}
?>
于 2013-04-01T00:29:38.307 に答える