喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
 50  3/5  <  1  2  3  4  5  > 
     
标题: [原创] KM文件缓存分布管理器---PHP扩展  
  本主题由 c1a1o1 于 2007-12-17 05:44 PM 设置高亮 
 
奶瓶 (NP博士)
版主
Rank: 7Rank: 7Rank: 7
老仙


UID 52707
精华 4
积分 5354
帖子 5859
金钱 5304 喜悦币
威望 50
人脉 0
阅读权限 100
注册 2004-11-22
来自 北大中文系
状态 在线
2000是个经验数字,非绝对




图片包子,注册送100包子!
2007-12-18 08:07 PM#21
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  Yahoo!  顶部
 
ustb
注册会员
Rank: 2
中级会员


UID 26170
精华 2
积分 100
帖子 259
金钱 80 喜悦币
威望 20
人脉 0
阅读权限 20
注册 2004-2-15
状态 离线
[推荐阅读] php安全问题
分目录用md5也不会慢到哪里去吧,个人感觉

我的办法:
md5一个字串,跟值相关,比如用户ID,要想分得更乱,再加个字符串因子
然后按两个一组进行拆分,因为md5中的字母范围是从0-f,两个数字的组合就是16*16 = 256,也就是说每一级目录的总数最多只有256
这256个目录里的每一个里又可以用两个字串再生成256个目录,如此进行,分到两级之后,最大的目录数是256*256 = 65536
同理,三级就是256*256*256,下面的函数限制到6级,真要到6级目录,那能创建的目录数便是256的6次方,自己算算吧,数不过来了。
总之,不论咋分,一个目录下的文件夹数量都不会超过256
其实这个办法也可以扩展开来,可以自定义一些字母来做目录名,不一定非要用16进制的字符

function getEncodeDir($encode_key, $value, $level=2)
{
    $level = (int)$level;
    $encode_str = md5($encode_key."+".$value);
    if($level > 6)
    {
        $level = 6;
    }

    $dir_name = array();
    for($i = 0; $i < $level; $i++)
    {
        $dir_name[] = substr($encode_str, $i*2, 2);
    }
    Return implode('/',$dir_name);
}

例:
$user_id = 741;
$dir_path = getEncodeDir("00544", $user_id, 3);

生成的目录:
58/bf/52

顺便说下,真是需要一次性生成6级这样的目录,估计任何电脑都会死掉,高效的办法是在需要的时候再生成
既然我们能够避免在同一时间去生成上万个目录,为什么要去死磕呢?




我的博客:http://blog.xoyo.com/ouran
2007-12-18 08:41 PM#22
查看资料  Blog  发短消息  QQ  顶部
 
fnet
高级会员
Rank: 4
**村大队书记



UID 65788
精华 0
积分 717
帖子 784
金钱 717 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-8-12
状态 离线
[推荐阅读] 上海招聘PHP程序员
我想这个扩展优势在于如何控制一个目录下不超过2000个文件夹。



JAVA
2007-12-18 09:00 PM#23
查看资料  访问主页  发短消息  QQ  顶部
 
七夜
中级会员
Rank: 3Rank: 3
中级会员


UID 29623
精华 2
积分 373
帖子 337
金钱 353 喜悦币
威望 20
人脉 0
阅读权限 30
注册 2004-6-25
来自 北京朝阳
状态 离线
[推荐阅读] 村长QQ三个太阳了!
其实算法很简单,把字符串转换为整形数字然后进行除、取模运算。
简单的算法才能有更高的效率




1.让你的PHP4用上SQLite3. PHP的SQLite3模块扩展
2007-12-18 10:10 PM#24
查看资料  发短消息  顶部
 
LuckLrj (中国php中的爱因斯坦)
版主
Rank: 7Rank: 7Rank: 7
老会员


UID 64836
精华 0
积分 2268
帖子 3057
金钱 2268 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-6-19
状态 离线
[推荐阅读] 建立这样一个网站,要花费多少钱?
你们都是开发千万级的人才。



学习,工作累了,请访问我的小站,娱乐一下。http://www.52sunny.net
2007-12-18 10:32 PM#25
查看资料  Blog  发短消息  顶部
 
phpxxx (phpxxx)
中级会员
Rank: 3Rank: 3
老会员



UID 27861
精华 0
积分 453
帖子 449
金钱 453 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2004-4-16
状态 离线
[推荐阅读] 村长,我发现喜悦证交所有个BUG
不开源谁敢用啊?大佬~
在php这个本身就开源的语言技术论坛中,没有什么不能开源的吧?

如果不开源,鬼知道你的程序做了什么?难说它不是一个有害程序!
2007-12-18 11:50 PM#26
查看资料  发短消息  顶部
 
unspace (未知空间)
版主
Rank: 7Rank: 7Rank: 7
百万富翁


UID 67567
精华 0
积分 48887
帖子 4985
金钱 47807 喜悦币
威望 0
人脉 1080
阅读权限 100
注册 2005-12-28
来自 吉林
状态 离线
[推荐阅读] php开发中的一些问题,麻烦大家支持下


QUOTE:
原帖由 七夜 于 2007-12-18 10:10 PM 发表
其实算法很简单,把字符串转换为整形数字然后进行除、取模运算。
简单的算法才能有更高的效率
想不通为啥不给开源,哪怕是只开源算法这一部分

为了骗贴




7月1日起,北京市低保、最低工资标准、失业保险、工伤保险、基本养老金5项社会保障标准均将全部上调。其中,最低工资标准增加70元,提高到800元。
2007-12-19 12:10 AM#27
查看资料  访问主页  Blog  发短消息  顶部
 
奶瓶 (NP博士)
版主
Rank: 7Rank: 7Rank: 7
老仙


UID 52707
精华 4
积分 5354
帖子 5859
金钱 5304 喜悦币
威望 50
人脉 0
阅读权限 100
注册 2004-11-22
来自 北大中文系
状态 在线
[推荐阅读] 类似xoop模块(区块)功能怎么实现了?
通过我对此人的了解,此人不是这种人(或者我看走了眼)
他绝对不会骗贴的!
他要骗的是MM!





图片包子,注册送100包子!
2007-12-19 12:29 AM#28
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  Yahoo!  顶部
 
tianfing
金牌会员
Rank: 6Rank: 6
天常的小孩


UID 37514
精华 0
积分 1219
帖子 387
金钱 1218 喜悦币
威望 0
人脉 1
阅读权限 70
注册 2004-10-22
状态 在线
[推荐阅读] 算法游戏icosian
我还是想看源文件!

或许楼上说的对,他是来泡MM的!
但村子里总共才几个MM,有得泡吗?




希望有一天,能够纯洁的爱上一个人!
QQ:285922205
我来玩 网页游戏
http://www.wlwan.com
2007-12-19 09:50 AM#29
查看资料  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2501
帖子 4654
金钱 2498 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] crontab运行 提示没权限
奔朝姐来的



最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2007-12-19 10:28 AM#30
查看资料  Blog  发短消息  顶部
 50  3/5  <  1  2  3  4  5  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024205 second(s), 7 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP