手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:serialize

hprose使用中的一個問題

什麼是hprose?這個我不想多說了,只想說它之前的版本叫phprpc,這是它的更新版,功能更強大。
官方地址是http://www.hprose.com。
以前用用都還行,結果就昨天在使用的時候發現,調用同樣的接口時,服務器返回502錯誤。但有時候確實是正常的。
仔細查看了一下,好象是返回的數據過大,於是我使用serialize將數組序列化後,用strlen查看了一下長度,發現長度在99999左右(這個數字當然是不對的,但大小差不多),最多也就99K嘍。但正因為這樣會出錯。於是我一點一點試
我在遠程的函數裏str_repeat("0",1111),一直嘗試,發現當數字在7000多時,就返回502了。因為是采用了php-fpm方式,所以我在本地的apache服務器上做了個測試,發現大約是在9000多字節。鬱悶。
問了一下andot,他說可能是服務器的設置也問題,也可能正好是一個BUG。但短時間內沒有時間測試了。

鬱悶

 

-----

时隔多日,这个BUG已经在一年前就解决了。只是我没有更新。andot居然来回复了一下,我想,我还是更新掉本文吧。

Tags: hprose, phprpc, serialize

yii CActiveRecord 中的一点小注意事项

纯笔记,在使用ActiveRecord的时候一点注意事项。
本来在处理缓存的时候想对一些数据做强制缓存的,但结果预想的目标和我不一样。
我的$cachekey = md5(serialize($model).$parameter);
然后在调用的时候发现$model对象中的一些信息都消失了。起初以为参数没有传递,但测试了一下之后发现全部正常,那问题出在哪里呢?
再一步步的调试,发现出在serialize后对象就变了。于是看了一下CActiveRecord的源码,果然发现了源码中有定义__sleep(),纠结啊。
看来以后要注意一下,不能随便把model给序列化了。

Tags: cactiverecord, __sleep, serialize

关于序列化javascript

不想多说什么,其实很多人在序列化上面纠结了很多了。
比如这篇javascript 序列化 ,它可是有完整的代码的哦,其实在很久之前,PHPRPC里就实现了PHP的序列化,还有PHPJS.org里也有相应的代码。当然这里我贴的还是我文中链接中的代码:

JavaScript代码
  1. function serialize(_obj)  
  2. {  
  3.    // Let Gecko browsers do this the easy way  
  4.    if (typeof _obj.toSource !== 'undefined' && typeof _obj.callee === 'undefined')  
  5.    {  
  6.       return _obj.toSource();  
  7.    }  
  8.    
  9.    // Other browsers must do it the hard way  
  10.    switch (typeof _obj)  
  11.    {  
  12.       // numbers, booleans, and functions are trivial:  
  13.       // just return the object itself since its default .toString()  
  14.       // gives us exactly what we want  
  15.       case 'number':  
  16.       case 'boolean':  
  17.       case 'function':  
  18.          return _obj;  
  19.          break;  
  20.    
  21.       // for JSON format, strings need to be wrapped in quotes  
  22.       case 'string':  
  23.          return '\'' + _obj + '\'';  
  24.          break;  
  25.    
  26.       case 'object':  
  27.          var str;  
  28.          if (_obj.constructor === Array || typeof _obj.callee !== 'undefined')  
  29.          {  
  30.             str = '[';  
  31.             var i, len = _obj.length;  
  32.             for (i = 0; i < len-1; i++) { str += serialize(_obj[i]) + ','; }  
  33.             str += serialize(_obj[i]) + ']';  
  34.          }  
  35.          else  
  36.          {  
  37.             str = '{';  
  38.             var key;  
  39.             for (key in _obj) { str += key + ':' + serialize(_obj[key]) + ','; }  
  40.             str = str.replace(/\,$/, '') + '}';  
  41.          }  
  42.          return str;  
  43.          break;  
  44.    
  45.       default:  
  46.          return 'UNKNOWN';  
  47.          break;  
  48.    }  
  49. }  

或许你也可以看一下PHPRPC的代码 。。我就不贴了提供下载一下,可以从这里下载:http://www.phprpc.org/zh_CN/download/ 【有序列化也有反序列化哦。。。】
我提供的只有PHPSerialize.js,请下载:phpserializer.js

Tags: serialize, javascript, 序列化

PHP 序列化(serialize)格式详解

PHP 序列化(serialize)格式详解

  1. 前言
  2. 概述
  3. NULL 和标量类型的序列化
  4. 简单复合类型的序列化
  5. 嵌套复合类型的序列化
  6. 自定义对象序列化
  7. Unicode 字符串的序列化
  8. 参考文献

原文来自Coolcode.cn,作者andot

» 阅读全文

Tags: php tutorials, serialize