我想在CakePHP 2中缓存HttpSocket->post
调用。
我正在调用以下代码:
$content = Cache::remember($key, function () use ($rateUrl, $xml, $uid) {
App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket(array('ssl_verify_peer' => false));
return $HttpSocket->post($rateUrl, $xml->asXML(), array(
'header' => array(
'Content-Type' => 'text/xml',
'RestUid' => $uid,
)
));
});
但是我收到了这个错误:
脚本尝试执行方法或访问不完整对象的属性。请确保类定义" HttpSocketResponse"您尝试操作的对象是在 unserialize()被调用之前加载或提供__autoload()函数来加载类定义
有人知道如何在匿名函数中使用HttpSocket
类或在CakePHP中调用其他方法吗?
答案 0 :(得分:0)
正如错误消息所示,您必须
[...]确保您尝试操作的对象的类定义“HttpSocketResponse”在 unserialize()被调用之前加载或提供__autoload()函数来加载班级定义
类型HttpSocketResponse
的序列化对象的类定义在反序列化时不可用,因此无法正常工作。在调用App::uses
之前添加相应的Cache::remember()
语句,以便CakePHPs自动加载器可以加载所需的类定义
App::uses('HttpSocketResponse', 'Network/Http');
$content = Cache::remember(/* ... */);
或切换到使用Composer,以便可以在没有任何App::uses()
调用的情况下自动加载所需的类。或者,也可以使用unserialize_callback_func
ini指令来定义加载所需类定义的回调。
另见