我有一个脚本,通过 RESTful Web 服务将订单数据发送到第 3 方系统。该系统要求每个请求都发送一个唯一 ID,该 ID 从下一个请求开始自动递增。
我已经通过在 Magento 的表中为此添加一个变量来实现这一点core_config_data
,并且作为我的代码的一部分,调用下面的函数来获取 ID 的下一个值,为下一个请求递增它。
class MyProject
{
public function getNextApiId() {
// Get the next ID.
$id = Mage::getStoreConfig('myproject/next_api_id');
// Increment the stored value for next time.
$nextId = $id + 1; // change $id++ by $id + 1 otherwise the result of $nextId = $id - 1;
Mage::getModel('core/config')->saveConfig('myproject/next_api_id',$nextId);
// Refresh the config.
Mage::getConfig()->cleanCache();
Mage::getConfig()->reinit();
// Return the ID.
return $id;
}
}
如果我用我的脚本发送一个请求,这工作正常 - 值递增,下一个 ID 用于脚本的下一次执行。
但是,如果我在同一脚本执行中循环处理多个请求,则该值似乎已被缓存。下面的代码应该说明一般流程,尽管为了简洁起见我已经减少了它:
function sendRequest($item) {
$apiId = $MyProject->getNextApiId();
// Build and send request body
}
foreach($items as $item) {
sendRequest($item);
}
这将导致初始 ID 号用于所有$items
.
和尝试刷新配置缓存似乎cleanCache()
根本reinit()
不起作用。关于如何阻止值被缓存的任何想法?