MySQL: Kaç dakika önce DB güncellendi?

3 Cevap php

Ben bir veri-tabanı bir alanı tutmak ve bir şekilde bir zaman güncellemek gerekir, daha sonra bunu 30 dakika önce ya da değil üzerinde olduğunu görmek için o zaman kontrol etmeniz gerekir, ve değilse, nasıl dakika 30 kadar sol?

PHP + MySQL ile yapıyor olması için gidiyorum herkes bana bunu yapmak için basit yolu söyleyebilir?

Teşekkürler!

3 Cevap

Let's assume you want to know how long ago the last update/insert in the table occurred.
You can set up a table with a timestamp field with an on update clause

CREATE TABLE foo (
  id int auto_increment,
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  primary key(id),
  key(ts)
)

ve daha sonra ts en büyük değeri ile kayıt sorgulamak

SELECT
  TIMEDIFF(Now()-Interval 30 Minute, ts)
FROM 
  foo
ORDER BY
  ts DESC
LIMIT
  1

edit: Eğer takılı / örneğin içerisinde değiştirilmiş tüm kayıtları almak istiyorsanız bu da çalışır son 12 saat.

SELECT
  TIMEDIFF(Now()-Interval 30 Minute, ts)
FROM 
  foo
WHERE
  ts > Now()-Interval 12 hour
ORDER BY
  ts DESC

edit2: there's also an off chance you might be interested in http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html:

SHOW TABLE STATUS returns the following fields:
...
Update_time
When the data file was last updated. For some storage engines, this value is NULL. For example, InnoDB stores multiple tables in its tablespace and the data file timestamp does not apply. For MyISAM, the data file timestamp is used; however, on Windows the timestamp is not updated by updates so the value is inaccurate.

Ben eklemek ve MySQL aşağıdaki gibi bir işlev şey çağırır güncellemek tüm sarın:

function MySqlQuery($query, $res){
    $result = mysql_query($qs, $res);
    if($result === false){
        mysql_query("QUERY STRING TO UPDATE FIELD IN DATABASE WITH NEW TIME", $res);
    }
    return $result;
}

Gerçek bir güncelleştirme sorgusu ile "YENİ ZAMAN İLE veritabanında alan GÜNCELLEMEYİ sorgu dizesi" ve gitmek için iyi olmalıdır değiştirin.

Ben ne olduğunu, en son kayıt üzerinde bir Zaman Damgası koydu. MySQL Query ile son kayıt çekin ve o son kaydın zamanını almak için mysql dizi işlevini getirme kullanın. Bu yalnızca zaman güncellenen bir veritabanı kullanarak için aynı gider.

Sen kaydında zaman şimdiki zamanı karşılaştıran bir fonksiyonu ile o zaman işlemek mümkün olacaktır. Oradan son mesaj beri zaman görüntüleyebilirsiniz, ve 30 dakika içinde ise bunu bir mesaj yankı yapabilirsiniz.

$currenttime = /* PHP Time Formatting you wish to use. */

$query = mysql_query("SELECT time FROM database");
$row = mysql_fetch_array($query);

echo "Last Record Posted @" . $row['time'];

$timesince = $currenttime - $row['time'];
echo "Time Since Last Post:" . $time - $row['time'];

if($timesince >= "30"){
echo "Over 30 Minutes!";
}

Herhangi bir sorunuz varsa bana bildirin. Yukarıdaki kod işe nasıl bir fikir vermelidir, ama bu kaba bir örnektir.

Luck Best!

EDIT:::

Üzgünüm, ben soru oynanırsa, hala veritabanına zamanı girmek gerekir. Hala zaman çekin ve 30 dakika ya da daha fazla olup olmadığını görmek için yukarıdaki kodu kullanabilirsiniz.

Zaman Damgası için PHP Time Manual check out. Sen MySQL Giriş ve ben yukarıda yayınlanmıştır kod her ikisi için aynı zaman biçimini almak isteyeceksiniz.