У меня есть несколько строк в таблице базы данных MySQL, с полем last_update (TIMESTAMP), чтобы регистрировать их в последний раз. На данный момент я пропускаю все строки каждые 300 секунд и проверяю, прошло ли более 3 часов, а затем обновляю эту строку, если это так.
$update_delay = 180;
$table_name = $wpdb->prefix . "products";
$results = $wpdb->get_results( "SELECT id, prod_id, last_update FROM $table_name" );
foreach ($results as $result)
{
$last_update = $result->last_update;
if (time() - strtotime($last_update) > $update_delay * 60)
{
Поскольку это неэффективно Я хотел бы запросить только те строки, где отметка времени старше 3 часов. Поскольку это поле имеет формат «2020-03-01 23:22:06», я думаю, что могу сделать что-то вроде следующего, но я не уверен, могу ли я сделать это, используя INTERVAL в запросе, или если проверить дату значение должно быть в PHP.
$old_timestamp = date('Y-m-d G:i:s') . "- 3 hours";
$results = $wpdb->get_results( "SELECT id, prod_id FROM $table_name WHERE last_update > $old_timestamp" );
Что было бы хорошим вариантом для эффективной реализации этого?