删除具有最旧时间戳的值
Delete the values with the oldest timestamp
我想在 cron 运行时删除最旧的时间戳值,同时创建新值。我有这个 cron 代码。这里 select 来自 watchdog 的所有值:
function error_cron() {
// Begin building the query.
$query = db_select('watchdog', 'th')
->extend('PagerDefault')
->orderBy('wid')
->fields('th', array('variables', 'type', 'severity',
'message', 'wid', 'timestamp'))
->limit(2000);
// Fetch the result set.
$result = $query -> execute();
// Loop through each item and add to $row.
foreach ($result as $row) {
error_table($row);
}
在接下来的代码中,我在 table:
中创建了看门狗的不同值
function error_table($row) {
$variables = $row -> variables;
$timestamp = $row -> timestamp;
$wid = $row -> wid;
$r = db_select('error', 'b')
-> fields('b')
-> condition('variables', $variables, '=')
-> condition('timestamp', $timestamp, '<=')
-> execute();
if($r -> rowCount() == 0) {
$query = db_insert('error')
->fields(array(
'timestamp' => $timestamp,
'wid' => $wid,
'variables' => $variables,
))
->execute();
}
}
好的所有这些代码 table 已经创建并且它具有不同的值但是当 cron 重新运行时它显示相同的值..我想要当有一行具有相同的 'variables'删除具有最旧时间戳的行并创建具有最新时间戳的新行。
我用这行代码解决了我的问题:
$giannis = db_delete('error')
-> condition('variables', $variables, '=')
-> condition('timestamp', $timestamp, '<')
->execute();
我想在 cron 运行时删除最旧的时间戳值,同时创建新值。我有这个 cron 代码。这里 select 来自 watchdog 的所有值:
function error_cron() {
// Begin building the query.
$query = db_select('watchdog', 'th')
->extend('PagerDefault')
->orderBy('wid')
->fields('th', array('variables', 'type', 'severity',
'message', 'wid', 'timestamp'))
->limit(2000);
// Fetch the result set.
$result = $query -> execute();
// Loop through each item and add to $row.
foreach ($result as $row) {
error_table($row);
}
在接下来的代码中,我在 table:
中创建了看门狗的不同值function error_table($row) {
$variables = $row -> variables;
$timestamp = $row -> timestamp;
$wid = $row -> wid;
$r = db_select('error', 'b')
-> fields('b')
-> condition('variables', $variables, '=')
-> condition('timestamp', $timestamp, '<=')
-> execute();
if($r -> rowCount() == 0) {
$query = db_insert('error')
->fields(array(
'timestamp' => $timestamp,
'wid' => $wid,
'variables' => $variables,
))
->execute();
}
}
好的所有这些代码 table 已经创建并且它具有不同的值但是当 cron 重新运行时它显示相同的值..我想要当有一行具有相同的 'variables'删除具有最旧时间戳的行并创建具有最新时间戳的新行。
我用这行代码解决了我的问题:
$giannis = db_delete('error')
-> condition('variables', $variables, '=')
-> condition('timestamp', $timestamp, '<')
->execute();