php提示PHP class x has no unserializer解决办法

PHP已经出到了5.3.8稳定版本,于是乎准备将公司生产服务器上的PHP从5.2.17升级到5.3.8,在测试服务器上调试的时候却发现了一个诡异的问题:

把PHP环境装好后,原先能在5.2.17正常运行的代码报错了,提示PHP class x has no unserializer,而同一套代码在同服务器上使用5.3.8则没有任何问题.Google一下了发现没有什么有用的信息,看来我是遇到冷门问题了,于是开始逐步debug检查,发现报错的地方位于使用memcache取数据的部分,在取出缓存在memcache中的数据时提示我的类没有反序列化功能,而此行代码运行在5.3.8的时候却没有任何问题. 

鉴于唯一的线索是这个反序列化的提示了,搜索了一下php官方相关序列化的信息,首先找到了序列化接口Serializable的介绍,在这里我注意到该接口有一个unserializ方法,这个是用于反序列化类时调用的借口. 同时,php的memcache扩展在把php数据对象存到memcache时是会将其序列化的,难道是我自己使用的对象没有实现Serializable接口的问题?追查了一下代码发现我存在memcache中的类是继承于Array_Object类,于是乎跑到官方Array_Object的介绍页面一看,果然如此.

Array_Object从5.3.0开始就实现了Serializable接口,而5.2是没有实现的。到这里,这个问题的原因也就明朗了,分析如下:

程序在两个版本的PHP下运行却使用同一个memcache缓存池,我先测试的是5.3.8版本,那么存进去的是PHP5.3的Array_Object对象,该对象在5.3下面可以正常序列化和反序列化,后来我又去访问了运行在PHP5.2下面的程序,这是在memcache中已经有了缓存对象,所以5.2读出来的是5.3中序列化的Array_Object对象,而在5.2中Array_Object是没有实现Serializable接口的,那么在反序列化时就会出现错误,也是就是提示PHP class x has no unserializer的原因。

解决这个问题的方法很简单,给每个程序使用不同的缓存池,避免产生数据污染和版本兼容问题。

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » php提示PHP class x has no unserializer解决办法

94 评论

  1. triamcinolone 4mg canada claritin cheap desloratadine medication

  2. ceftin cost buy careprost purchase robaxin online cheap

  3. viagra sildenafil 200mg sildalis usa brand lamotrigine

  4. order albuterol for sale proventil oral buy cipro pills

  5. Thank you for great information. Hello Administ . Metropol Halı Karaca Halı Öztekin ve Selçuklu Halı Cami Halısı ve Cami Halıları Türkiye’nin En Büyük Cami Halısı Fabrikasıyız…

  6. cialis 40mg drug viagra daily best pill for ed

  7. sildenafil 100mg brand buy sildenafil order propecia for sale

  8. prednisolone 10mg uk oral gabapentin lasix over the counter

  9. dutasteride over the counter oral avodart buy xenical pill

  10. buy cenforce 50mg without prescription glucophage cheap purchase glycomet sale

  11. purchase lexapro online cheap naltrexone cost order generic revia 50mg

  12. order atorvastatin 10mg without prescription sildenafil us buy viagra 100mg pills

  13. cialis usa cialis store best natural ed pills

  14. atenolol 50mg tablet femara 2.5mg usa buy generic letrozole 2.5mg

  15. buy levoxyl generic clomid 100mg ca buy vardenafil no prescription

  16. buy glucophage 500mg online cheap amlodipine price buy norvasc without a prescription

  17. order tamsulosin pill purchase flomax buy spironolactone 25mg sale

  18. buy cymbalta 40mg generic duloxetine cost piracetam where to buy

  19. buy clonidine pills for sale buy meclizine cheap order tiotropium bromide online

  20. benicar 20mg drug calan 120mg brand divalproex 500mg over the counter

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡