我目前正在使用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\\u field(),但我不确定从哪里开始。我目前的理由是:
1) 在页面中具有xPath和update\\u field()函数。php(函数XYZ)
2) 在函数中调度函数XYZ。php
这是正确的方法吗?任何指导都将不胜感激!!
非常感谢!
最合适的回答,由SO网友:karpstrucking 整理而成
您不一定需要为此使用WP Cron API。相反,您可以修改现有代码以利用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