Очистка веб-страниц с помощью Cron


В настоящее время я соскабливаю цены с трех веб-сайтов, используя XPath, но, поскольку он обновляется при каждой загрузке страницы, загрузка замедляется. Что я хотел бы сделать, так это хранить эти данные и обновлять их только еженедельно. Итак:

1) Соскребите цены с трех разных веб-сайтов, используя XPath,

2) Храните эти данные (и обновляйте их еженедельно с помощью Cron)

На данный момент я успешно снижаю цены с помощью XPath, используя следующее:

<?php // a new dom object
$store_link = get_field('store_link');

$ch = curl_init($store_link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$cl = curl_exec($ch);

$dom = new DOMDocument();
@$dom->loadHTML($cl);
$xpath = new DOMXpath($dom);

$price = $dom->getElementById("tr_base_main_price");
$store_price = trim(str_replace(str_split('$'), '', ($price->nodeValue)));
} ?>

Однако я совершенно не в курсе, как заставить его работать с cron. Я использую ACF, поэтому я знаю, что буду использовать update_field(), но я не уверен, куда идти дальше. Мои текущие рассуждения таковы:

1) Есть функция XPath и update_field() в page.php (функция XYZ)

2) Функция планирования XYZ в functions.php

Это правильный способ сделать это? Любые рекомендации будут с благодарностью приняты!!

Большое спасибо!

 1
Author: Pieter Goosen, 2014-11-15

2 answers

Для этого необязательно использовать API WP Cron. Вместо этого вы можете изменить существующий код, чтобы использовать переходные процессы WP. Переходные процессы - это в основном параметры, срок действия которых истекает через определенное время. Вы можете обернуть текущий процесс очистки в оператор if, который проверяет наличие сохраненного переходного процесса. Если он существует, он извлекает данные из переходного процесса. Если это не так, он выполняет очистку и сохраняет данные как временные.

$store_price = get_transient( "store_price_{$post->ID}" );
if ( ! $store_price ) {
  // curl & xpath stuff here
  set_transient( "store_price_{$post->ID}", $store_price, WEEK_IN_SECONDS );
}
// do stuff with $store_price here

API переходных процессов: http://codex.wordpress.org/Transients_API

 3
Author: karpstrucking, 2014-11-15 14:40:29

Вы можете использовать wp_schedule_event() для запуска функции обновления цен с заданными интервалами!

 1
Author: Fiaz Husyn, 2014-11-15 14:33:53