2014-01-17 68 views
0

我有一个运行在PHP中的守护进程脚本。该脚本连续击中一个端点并从资源获取响应并检查响应。如何使守护进程缓存服务器响应?

响应通常是

{"a": 1, "b": 2, "c": 3, "status" : "true"} 

的大部分时间。

偶尔,也有可能成为该反应可能改变

{"a": 1, "b": 2, "c": 3, "status" : "false"} 

我有逻辑阅读的A,B值和C,并基于这些操作。

我的问题是,有没有办法以某种方式缓存这个响应,而不是在守护进程层面一遍又一遍地触发结束点?

或者有没有办法从服务器级缓存json响应?

+0

所以你将其缓存在本地,那么如何知道它何时更改而不检查? – 2014-01-17 02:58:15

回答

0

使用你的对象的每个元素作为一个数组键:

$responses[$a][$b][$c]['status'] = true; 

缓存将是一个简单的:

if (isset($responses[$a][$b][$c]['status'])) { 
    ... used cached value 
} else { 
    ... compute new value and store in cache 
} 

虽然你可能在那里需要一些额外的逻辑过期旧条目,其他的你最终会吮吸内存直到事情消失。

0

如果你希望缓存从您的守护程序的响应这里有一些选择

1 - 如果PHP < 5.5,可以使用APC的用户的高速缓存

这里是如何节省一些随机的一段文字(没关系,如果它的JSON或一个对象,你就可以取回罚款)

apc_add('cache_key',$save_this_var, TTL); 

OR

 apc_store('cache_key',$save_this_var, TTL); 
如果保存完全相同的关键点别的

apc_add不会覆盖,而apc_store将覆盖 TTL是时间(单位:秒)要缓存的数据

现在你可以检索像这样的高速缓存

 $my_cache = apc_fetch('cache_key'); 

$ my_cache已经变量保存早期

2 - 如果你正在使用PHP 5.5,然后通过添加apcu模块使用APC的用户的高速缓存,它的工作原理完全一样APC缓存我上面所解释的,只是名称更改(apcu不缓存opc颂歌而在PHP < 5.4 APC一样)

3 - 如果你是在云还是多服务器环境,你可以使用memcached的为好,但如果单独的机器上,我将与APC或apcu去

相关问题