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. 小路

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

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.