...
|
...
|
@@ -12,6 +12,8 @@ |
|
|
|
|
|
namespace Api;
|
|
|
|
|
|
use Plugin\Cache;
|
|
|
|
|
|
class Yohobuy
|
|
|
{
|
|
|
|
...
|
...
|
@@ -100,11 +102,12 @@ class Yohobuy |
|
|
*
|
|
|
* @param string $url 接口URL
|
|
|
* @param array $data 参数列表
|
|
|
* @parma mixed $cache 控制是否启用接口数据的缓存(时间单位为秒). 如3600表示缓存1小时, false表示不缓存
|
|
|
* @param bool $returnJson 控制是否返回json格式数据
|
|
|
* @param int $timeout 超时时间
|
|
|
* @return mixed
|
|
|
*/
|
|
|
public static function get($url, $data = array(), $returnJson = false, $timeout = 5)
|
|
|
public static function get($url, $data = array(), $cache = false, $returnJson = false, $timeout = 5)
|
|
|
{
|
|
|
// 销毁私钥参数
|
|
|
if (isset($data['private_key'])) {
|
...
|
...
|
@@ -114,6 +117,15 @@ class Yohobuy |
|
|
$url = self::httpBuildQuery($url, $data);
|
|
|
}
|
|
|
|
|
|
/* 开启缓存的情况 */
|
|
|
if ($cache) {
|
|
|
// 先尝试获取一级缓存(master), 有数据则直接返回.
|
|
|
$result = Cache::get($url, 'master');
|
|
|
if (!empty($result)) {
|
|
|
return $result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$ch = curl_init($url);
|
|
|
curl_setopt($ch, CURLOPT_HEADER, 0);
|
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
|
...
|
...
|
@@ -125,6 +137,18 @@ class Yohobuy |
|
|
curl_close($ch);
|
|
|
$data = array();
|
|
|
|
|
|
/* 开启缓存的情况 */
|
|
|
if ($cache) {
|
|
|
// 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
|
|
|
if (empty($result)) {
|
|
|
$result = Cache::get($url, 'slave');
|
|
|
}
|
|
|
// 接口调用成功时,这里会设置一级(master)和二级(slave)的缓存数据.
|
|
|
else {
|
|
|
Cache::set($url, $result, $cache);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -182,12 +206,22 @@ class Yohobuy |
|
|
*
|
|
|
* @param array $urlList 接口列表
|
|
|
* @param array $options CURL设置项
|
|
|
* @parma mixed $cache 控制是否启用接口数据的缓存 如3600表示缓存1小时, false表示不缓存
|
|
|
* @parma mixed $cache 控制是否启用接口数据的缓存(时间单位为秒). 如3600表示缓存1小时, false表示不缓存
|
|
|
* @param int $timeout 超时时间,单位是秒
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getMulti($urlList = array(), $options = array(), $cache = false, $timeout = 3)
|
|
|
{
|
|
|
/* 开启缓存的情况 */
|
|
|
if ($cache) {
|
|
|
$key = md5(implode(',', array_values($urlList)));
|
|
|
// 先尝试获取一级缓存(master), 有数据则直接返回.
|
|
|
$result = Cache::get($key, 'master');
|
|
|
if (!empty($result)) {
|
|
|
return $result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$result = array();
|
|
|
$response = array();
|
|
|
$running = 0;
|
...
|
...
|
@@ -256,6 +290,18 @@ class Yohobuy |
|
|
}
|
|
|
curl_multi_close($mh);
|
|
|
|
|
|
/* 开启缓存的情况 */
|
|
|
if ($cache) {
|
|
|
// 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
|
|
|
if (empty($result)) {
|
|
|
$result = Cache::get($key, 'slave');
|
|
|
}
|
|
|
// 接口调用成功时,这里会设置一级(master)和二级(slave)的缓存数据.
|
|
|
else {
|
|
|
Cache::set($key, $result, $cache);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -263,10 +309,25 @@ class Yohobuy |
|
|
* rpc调用远程服务(YAR)
|
|
|
*
|
|
|
* @see http://php.net/manual/zh/yar-client.setopt.php
|
|
|
* @param string $uri
|
|
|
* @param string $method
|
|
|
* @param array $parameters
|
|
|
* @param mixed $cache 控制是否启用接口数据的缓存(时间单位为秒). 如3600表示缓存1小时, false表示不缓存
|
|
|
* @param int $timeout
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function yarClient($uri, $method, $parameters = array(), $timeout = 3000)
|
|
|
public static function yarClient($uri, $method, $parameters = array(), $cache = false, $timeout = 3000)
|
|
|
{
|
|
|
/* 开启缓存的情况 */
|
|
|
if ($cache) {
|
|
|
$key = self::httpBuildQuery($uri . $method, $parameters);
|
|
|
// 先尝试获取一级缓存(master), 有数据则直接返回.
|
|
|
$result = Cache::get($key, 'master');
|
|
|
if (!empty($result)) {
|
|
|
return $result;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$client = new \Yar_Client($uri);
|
|
|
$client->SetOpt(YAR_OPT_PACKAGER, 'php');
|
|
|
$client->SetOpt(YAR_OPT_TIMEOUT, $timeout);
|
...
|
...
|
@@ -278,6 +339,18 @@ class Yohobuy |
|
|
$result = array();
|
|
|
}
|
|
|
|
|
|
/* 开启缓存的情况 */
|
|
|
if ($cache) {
|
|
|
// 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
|
|
|
if (empty($result)) {
|
|
|
$result = Cache::get($key, 'slave');
|
|
|
}
|
|
|
// 接口调用成功时,这里会设置一级(master)和二级(slave)的缓存数据.
|
|
|
else {
|
|
|
Cache::set($key, $result, $cache);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
...
|
...
|
|