php memcache 客户端的一个隐秘问题

发现用 php 的 memcache 扩展的时候,没有区分键里的 “_” 和 “ ” 。想起来 memcache 协议里,键是不能用空白的,一定是 php 的客户端做了什么处理。去看了下源代码,果然……

#define MMC_PREPARE_KEY(key, key_len)
    php_strtr(key, key_len, “trn “, “____”, 4);

php 默默地就把这些个空白字符给替换掉了,而且这个替换操作没在手册里提到。用不会引起歧义的方式替换或者干脆抛一个错,不给用带空白的字符做键都会更好。就这么不做声地替换了很可能就会引起一些隐秘的错误。

4 thoughts on “php memcache 客户端的一个隐秘问题

  1. 小路 November 15, 2008 / 5:56 pm

    若是这个方面的逻辑,只要memcache的PHP端,顺序上没弄错,就问题不大
    无非就两种逻辑,若是add,就判断一下,set就不用判断..
    可能存在的问题是..用set的时候,数据被覆盖,程序员却不知道为何..这得跟手册的编写人提醒一下,若出现这种问题,估计很难调试..

  2. 弱弱的Bruce November 12, 2008 / 11:49 am

    弱弱地仰视下,自己php还处于入门阶段,没可能给技术部投简历了……要么先做做客服,哈哈~

  3. 小花 November 11, 2008 / 3:00 pm

    崇拜地顶顶>_<

  4. Summer November 11, 2008 / 2:46 pm

    果然……神仙就是神仙……发现,解决,总结……
    好高级……

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s