我想在memcache中存储bigML Model对象。遵循以下步骤。
1-序列化bigML模型对象
2-将序列化字符串存储在memcache中。
3-从memcache中获取序列化字符串。
4-反序列化字符串。
$local_model = new Model($latestModel, $api);
$local_model_obj = serialize($local_model);
$memcache->set('latest_model_object',$local_model_obj);
$local_model = unserialize($local_model_obj);
注意:序列化和反序列化在我的本地服务器中正常工作。并且在服务器中它低于错误。
unserialize():在/ base ..的偏移100处的3726字节错误。
答案 0 :(得分:0)
Vaishnavesh,
这可能是本地服务器和远程服务器之间不同编码版本的问题。无论如何,尝试检查使用base64编码是否有帮助:
$local_model_obj = base64_encode(serialize($local_model));
...
$local_model = unserialize(base64_decode($local_model_obj));
答案 1 :(得分:0)
$local_model_obj = serialize($local_model);
$specialChar = before ('ass"', after ('";O:8:"', $local_model_obj));
$local_model_obj = str_replace($specialChar, 'stdCl', $local_model_obj);
$local_model = unserialize($local_model_obj);
function after ($this, $inthat)
{
if (!is_bool(strpos($inthat, $this)))
return substr($inthat, strpos($inthat,$this)+strlen($this));
};
function before ($this, $inthat)
{
return substr($inthat, 0, strpos($inthat, $this));
};
工作正常。但我认为这不是一种有效的方式。