2016-07-29 5 views
0

memcache에 bigML Model 객체를 저장하고 싶습니다. 아래 단계를 따르십시오.Google 앱 엔진 직렬화 문제

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() /베이스 (100) 3726 바이트 .. 오프셋에서 오류

스크린 : http://prnt.sc/byzzai

enter image description here

+1

텍스트를 이미지로 게시하지 마십시오. 대신 복사하여 게시물에 붙여 넣으십시오. –

+0

개체를 memcache에 직접두면 자동으로 serialize됩니다 ... 시도해보십시오. – 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)); 
}; 

. 하지만 나는 그것이 유효한 방법이 아니라고 생각합니다.