使用文件函数操作Memcache

最近一周,SAE又悄悄的上线了一个新功能.那就是开始对之前的服务进行包装,使大家可以通过文件函数来操作它们.

第一个完成的是Memcahe的Wrapper.其它几个服务的Wrapper稍后会陆续发布.

如何使用?

嗯,简单的说,我们添加了saemc协议,大家可以把 saemc:// 想象成自己的一个目录.接下来就很简单了.

写入MC:

file_put_contents( "saemc://1.txt" , "我是文件内容" );

上边的代码等效于

memcahe_set( $mc , "1.txt" , "我是文件内容" );

同样的,读取MC:

$content = file_get_contents( "saemc://1.txt" );

上边的代码等效于

$content = memcahe_get( $mc , "1.txt" );

其实大部分文件函数如fopen等都可以支持.不过MC本身是没有目录概念的,所以mkdir之类的只是伪实现.

有什么用?

最直接的用途是,大家多了一种操作MC的途径.很多因为倚赖本地文件系统的应用,如Smarty等,可以通过简单的修改目录路径来进行平滑移植.

它的原理?

Wrapper其实是PHP提供的一项标准功能,很多用户用它来封装SMB,Mysql等.你也可以在SAE和其他PHP环境上封装自己的Wrapper.

相关资料可以参照这里: http://cn2.php.net/manual/en/class.streamwrapper.php

和这里: Easy同学在开发MC Wrapper时遇到的一些细节问题

Comment

  • Trackback are closed
  • Comments (6)
    • jayeeliu
    • 03/10. 2010 2:24下午

    saemc协议,file_get_contents( “saemc://1.txt” );,这个倒是很有新意

    • im007boy
    • 03/10. 2010 4:03下午

    要邀请码。。。。

    • xLight
    • 03/10. 2010 4:49下午

    hehe
    我前些天也在我们的系统内实现类似的 Streaming wrapper
    所有keyvalue都可以用这个统一接口,很方便

    一个很讨厌的bug,在处理大文本时很讨厌
    这个该死的Magic 8192
    http://bugs.php.net/bug.php?id=30936

    • tito
    • 03/10. 2010 6:03下午

    key值如果就是uri的话.

    通过nginx的proxy丢给memcache,就可以图片目录形式了。

    比如

    http://2.pic02.dianzhanggui.net/9db12fa33584f7bc40d8fbe2a75c5324/default/20100306/1737680d0b067d4d.jpg

    其实9db12fa33584f7bc40d8fbe2a75c5324/default/20100306/1737680d0b067d4d.jpg
    就是他的key。

    那样就可以有目录的意思了。

  1. 很好的点子喔 ~ O(∩_∩)O ~

    • smcz
    • 03/16. 2010 9:28上午

    好玩!感兴趣

Comment are closed.