2016-07-29 83 views
0

我想将bigML模型对象存储在memcache中。遵循以下步骤。Google应用引擎序列化问题

1-连载一个bigML模型对象

2-商店在内存缓存序列化字符串。

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); 

注意:序列化和反序列化在我的本地服务器上正常工作。并在服务器中,它是抛出低于错误。

反序列化():错误偏移量100 3726的字节/碱..

截图:http://prnt.sc/byzzai

enter image description here

+1

请不要将文字发布为图片。将它们复制粘贴到您的帖子中。 –

+0

将对象直接放入memcache会自动将它们串行化......试试? – Tom

回答

0

Vaishnavesh,

这可能是与不同​​的编码的问题本地服务器和远程服务器之间的版本。无论如何,尝试检查是否使用base64编码帮助:

$local_model_obj = base64_encode(serialize($local_model)); 
... 
$local_model = unserialize(base64_decode($local_model_obj)); 

检查这个其他答案:Change serialization functions in PHP for Memcached

+0

我试过一样,但它不工作。 – Vaishnavesh

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)); 
}; 

这是工作的罚款。但我认为这不是一个有效的方法。