【发布时间】:2014-01-17 11:02:17
【问题描述】:
我使用的货币汇率服务每月只允许 1000 个请求,因此我必须将检索到的汇率保存到数据库中一小时,然后再用新请求更新它们。
然而,我的网站请求新汇率的频率远高于每小时一次,我终于意识到这是因为并发 PHP 脚本试图同时将汇率更新到数据库中。这是我的代码的简化示例:
function get_rates()
{
$rates = get_transient( 'exchange_rates' );
if( $rates === false ) {
$ch = curl_init( 'http://examplecurrencyrates.com/rates.json' );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$rates = curl_exec( $ch );
$cache_time = 3600; // 60 mins
set_transient( 'exchange_rates', $rates, $cache_time );
curl_close( $ch );
}
return $rates
}
如何确保每小时只有一个请求更新汇率?
【问题讨论】:
-
您可以专门编写一个脚本来更新您使用计划任务运行它的速率,传递一个关键参数或其他东西以确保只有任务运行它而不是通过其他方式运行
-
你可以在服务器上写一个小文件,包含上次更新的日期和时间。每次脚本要更新时,您都会读取文件,如果没有小时差,则退出脚本。
标签: php wordpress curl concurrency