27

データベースの日時に対して現在の時刻をテストする必要があります。30分経過している場合はコードを実行し、そうでない場合は実行しないでください。これは私がいるところです、そして私は立ち往生しています:

$link = mysqli_connect("hostname", "username", "password", "database");
$q = "SELECT id FROM dwCache ORDER BY id DESC LIMIT 1";
$qu = mysqli_query($link, $q);

while($row=mysqli_fetch_array($qu, MYSQL_ASSOC)){
        $id = $row['id'];
        $cache = $row['cache'];
        $timest = $row['time'];
    }

$newTime = 
$difference = $timest
if($timest >= )

あなたが下に向かって見ることができるように、私は何をすべきかわからないのでそれを失います。

$timest戻り値:2013-02-01 12:36:01形式としてY-m-d h-i-s

二重投稿についてお詫びします。その他は削除されました。

4

4 に答える 4

50

最初$timestにタイムスタンプに変換

$time = strtotime($timest);

$curtime = time();

if(($curtime-$time) > 1800) {     //1800 seconds
  //do stuff
}
于 2013-02-01T13:35:22.017 に答える
12

すべてをSQLステートメントで実行します

SELECT id FROM `dqCache` WHERE `time`<DATE_SUB(NOW(), INTERVAL 30 MINUTE);

これにより、時間列が30分前のテーブルからすべてが返されます。

于 2013-02-01T13:33:52.963 に答える
1

この状況では、UNIXタイムスタンプを使用するのが好きです。

$timest = date('u'); // gets the unix timestamp
$q = "SELECT id 
      FROM `dwCache` 
      WHERE {$timest} - UNIX_TIMESTAMP(`timestamp_col`) > 1800";

説明:

これは基本的に、現在の時刻とテーブル列の時刻との差を計算します。1800(30分)よりも大きい場合は、行が選択され、PHPコードが実行されます。

利点

始めたPHPチェックの代わりにこれを使用することにはいくつかの利点があります。選択する行が少なくなるため、占有するメモリも少なくなります。

PS:

使用して親指を立てるMySQLi

于 2013-02-01T13:33:09.067 に答える
-1
SELECT id FROM dwCache ORDER BY id DESC LIMIT 1

あなたはidフィールドだけを得るでしょう、それは最初です。2つ目は、時間変換の場合:MySQLは日時をUnixタイムスタンプに変換します

3番目:関数を使用して時間文字列を変換できますstrtotime

于 2013-02-01T13:29:51.677 に答える