Web Scraping with Cron

时间:2014-11-15 作者:Guit4eva

我目前正在使用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

这是正确的方法吗?任何指导都将不胜感激!!

非常感谢!

2 个回复
最合适的回答,由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

SO网友:Fiaz Husyn

您可以使用wp_schedule_event() 以设定的时间间隔启动价格更新功能!

结束