June 20, 2010
闲谈 Web 图片服务器
"现在很多中小网站(尤其是 Web 2.0 站点) 都允许用户上传图片,如果前期没有很好的规划,那么随着图片文件的增多,无论是管理还是性能上都带来很多问题。就自己的一点理解,抛砖引玉,以期能引出更具价值的信息。\n事关图片的存储 把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很;如果有能力自己开发单独存储图片的文件系统,那么也不用接着往下看了。\n如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能力。是 7200 转的还是 15000 转的,实际表现差别就很大。是选择 ReiserFS 还是 Ext3 ,怎么也要测试一下吧? 创建文件系统的时候 Inode 问题也要加以考虑,选择合适大小的 inode size ,在空间和速度上做取舍,同时防患于未然,注意单个文件系统下文件个数别达到极限。\n独立,独立的服务器 无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。这几乎成为常识了(不过在我做过面向 Web 的项目之前就这个问题也被人笑话过)。具备独立的图片服务器或者服务器集群后,在 Web 服务器 …"
June 20, 2010
小规模低性能低流量网站设计原则
"到处都是什么大规模啊,高流量啊,高性能之类的网站架构设计,这类文章一是满足人们好奇心,但看过之后也就看过了,实际收益可能并不大;另外一个副作用是容易让人心潮澎湃,没学走先学跑,在很多条件仍不具备的情况下,过度设计、过度扩展(高德纳大爷也说过,”过早优化是万恶之源”),所以,这里反弹琵琶,讨论一下小规模、低性能、低流量的网站该如何搞法。\n如果站点起步阶段可能就是一台机器(或是一台虚拟机,比如 JobsDigg.com ),这个时候,去关注什么数据拆分啊,负载均衡啊,都是没影子的事情。很多大站点的经验绝不能照搬,辩证的参考才是硬道理。\n拥抱熟知的技术 动手构建站点的时候,不要到处去问别人该用什么,什么熟悉用什么,如果用自己不擅长的技术手段来写网站,等你写完,黄花菜可能都凉了。所以,有现成的软件组件可用,就不要自己重新发明轮子。人家说 Python 牛,但自己只懂 PHP ,那就 PHP 好了,如果熟悉 .net ?,那也不错。用烂技术不是丢人的事情,把好技术用烂才丢人。\n架构层次清晰化 起步的阶段应该清楚的确定下来架构的层次。如果都搅和在一起,业务一旦扩增开来,如果原有的一堆东西拆不开就是 …"
June 17, 2010
lighttpd配置DiscuzX伪静态规则详细图文教程
"VPS下lighttpd配置DiscuzX伪静态规则\n第一步:进入Kloxo VPS控制面板点击域名选项. 第二步:进入域名选项后,选中你所要配置lighttpd的DiscuzX伪静态规则的域名, 这里所需要配置的域名为找iPad论坛 www.cn0393.com , 点击它,进入站点选项列表. 第三步:点击lighttpd地址重写规则按纽,进入lighttpd配置界面. 第四步:把由找ipad论坛提供的lighttpd的DiscuzX伪静态规则文件粘贴进空白框中. 第五步:然后点击Update按纽,应用并使lighttpd生效. 注:lighttpd会自动重启可以不用像IIS那样需要手工重启。 第六步:进入DiscuzX管理中心,点击–》全局–》优化设置–》URL静态化 把箭头所指的勾全选中–》点提交 最后一步,就是更新一下缓存就OK了,超简单。哥你懂的,就不截图了。自已看效果吧!"
June 11, 2010
php 静态类和方法
"\u0026lt;?php\u0026lt;br /\u0026gt; /*\u0026lt;br /\u0026gt; //静态属性 或静态方法不需要所在类被实例化就可以使用\u0026lt;br /\u0026gt; //使用方法:类名::静态方法名(静态属性名)\u0026lt;br /\u0026gt; //例子:static.php\u0026lt;br /\u0026gt; */\u0026lt;br /\u0026gt; class Math\u0026lt;br /\u0026gt; {\u0026lt;br /\u0026gt; public static $PI=3.14; //定义静态属性\n//public $PI=3.14; //静态方法不能调用非静态的属性\n`//定义一个静态方法,求两个数中的最大值\n静态方法和属性-深入PHP面向对象.模式与实践\nPHP静态变量介绍\n来源:\u0026lt;a href=\u0026quot;http://blog.chinaunix.net/u1/51625/showart_406076.html\u0026quot; target=\u0026quot;_blank\u0026quot;\u0026gt;http://blog.chinaunix.net/u1/51625/showart_406076.html\u0026lt;/a\u0026gt;"
June 11, 2010
PHP生成静态页面类
"class Shtml\n{\nvar $Templet;\nvar $DataSource;\nvar $Dir;\nvar $fileName;\nvar $mod;\nvar $handle;\nfunction Shtml($fileName=””)\n{\n$this-\u0026gt;fileName=$fileName;\n$this-\u0026gt;mod=”wb”;\n$this-\u0026gt;handle=false;\n$this-\u0026gt;Templet = “”;\n$this-\u0026gt;DataSource = array();\n$this-\u0026gt;Dir = “”;\n}\n/// \u0026lt;描述\u0026gt;\n/// 绑定数据源,参数为一数组。\n///\nfunction BindData($arr)\n{\n$this-\u0026gt;DataSource = $arr;\n}\n/// \u0026lt;描述\u0026gt;\n/// 设置文件存放路径。\n///\nfunction SetDir($dir)\n{\n$this-\u0026gt;Dir = $dir;\n}\nfunction SetFileName($fileName)\n{\nreturn …"
June 11, 2010
php设计模式介绍之注册模式
"《PHP 设计模式介绍》第五章 注册模式\n我们通常认为避免使用全局变量是一种好的选择,因此,对象经常被作为参数从一段代码传递到另一段。但是传递实例的一个问题就是对象有时候不知道将要 传递给谁——?经过一个函数后才被传递到真正需要这个对象的函数。\n为了编写,阅读,修改代码的方便,最好能够减少不同对象的数量,并且能够将大量广泛使用的对象统一表示为一个单一,常用的对象。\n问题:\n你如何通过单一的全局的对象来获取对其它对象的引用?\n解决方案:\n“注册模式”就像“对象的电话簿”——储存并且能够取回对对象引用的登记簿。(注:PHP中的“联合数组”也起到了类似“电话簿”的功能。事实上, “注册模式”就是围绕PHP中强大的数组完成的。)“注册模式”的一些特性经常被包含在“单一模式”中(参见第四章),使得“注册模式”成为你整个应用信 息的决定性来源。\n注释:“注册模式”类主要参考了Martin Fowlerdescribes用java语言实现的Patterns of Enterprise Application Architecture(企业应用程序体系结构模型)。Marcus Baker谢了一篇详细 …"
June 7, 2010
FreeBSD下用mrtg监控本机流量、内存、cpu使用率、整网流量
"经常看到说mrtg的,说论坛里面的资料不对,其实不是不对,是有些说的不详细而已,我刚开始作的时候也是费了不少时间的,整理一下,发到这里吧,希望能 为后来的兄弟们省下时间 前言:我实验的机器是FreeBSD4.10,其他版本的应该也一样,其他unix like系统估计也是可以的,因为我只用过FreeBSD,不敢 肯定。另外我这篇文章的前提是你的机器上已经安装了apache,并能正常使用,如果没有请参考网上其他文 章安装,本文就不再赘述。\n一:先介绍如何用mrtg来监控本机的流量 1:安装 snmp\ncd /usr/ports/net-mgmt/p5-SNMP(好像没有这个目录的,可以用路径:/usr/ports/net-mgmt/net-snmp/”这) make install clean 当中会叫你填写你的email、操作系统等等,直接回车即可。\n可以用以下命令启动snmp,/usr/local/etc/rc.d/snmpd.sh start\n2:安装 mrtg\ncd /usr/ports/net-mgmt/mrtg make install clean\n3:配置 index.cfg …"
June 3, 2010
csdn.net的系统架构研究
"csdn作为国内最大的程序开发社区,影响了足足一代人。它是国内优秀杂志《程序员》的网站,我从前非常喜欢《程序员》这本杂志,里面的文章都非常优秀, 那时只有5元钱的我每个月花10块钱买本这样的杂志,看个三五年,都舍不得丢下。\n但是今天观察了下csdn站点的架构,发现做的比较简单,看来开发者比较喜欢从程序着手,着重优化代码和数据库,对系统整体架构思考的时间不多。\n我着重看了几个二级域名:www、news、bbs/community和blog,其中www、news这些静态文件都有通过squid缓存,用的 app_squid架构,然后是dns轮询做分流。\n在这里顺便讨论下为什么很多大型网站都喜欢用dns轮询来作首页,而不采用lvs或其它负载均衡策略。这是因为负载均衡都是把所有的访问先集中到一个ip 上,因为只有一个ip,所以无意间这个ip的稳定性就关系重大了。ip稳定性会受很多因素影响:n个交换机、线路、机器等等,颇为复杂。而首页很有可能会 用到异地的负载均衡,这么来不用dns,方案就很难设计了。现在的常用浏览器和下载软件,都有对dns的故障处理机制,所以dns也是可以屏蔽掉一些故障 的,虽然 …"
June 3, 2010
nginx图片服务器的架构方案
"图片服务通常数据容量较大,而且访问也频繁,鉴于此,图片服务就会有两种问题,一是存储问题,二是访问量问题。\n存储问题就是硬盘容量问题,花钱买硬盘就可以了,看似简单,但着实也是最苦的问题。按目前探索来看,最好的方式是:在任何时刻遇到硬盘空间不够时,买颗硬 盘插上,最多改改配置,就能立刻利用;另外,硬盘要能充分利用,不然图片存储量大再加上备份,很恐怖,最好是每颗硬盘都用上100%的空间。\n访问量也是个大问题,如果服务不允许防盗链,那么访问量会引起带宽、服务器压力等问题,有钱的话直接扔CDN,没钱或者有更多的钱,就自己做吧。根据垣古 不变的真理“越老的图,访问量也相对较少”这一点,分成两大部分,一边处理最新的图片,一边处理老旧的图片。最新的图片访问量大,但存储量较少;老图片访 问量低,但存储量大。\n大概分析完了,开始制定方案。\n一、拟定一个存储目录规则:\n在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成:/200810/16/a/b/abcde.jpg或者/2008 /10/16/a/b/abcde.jpg。按日期制定这个目录规则后,就可以按年月来拆机器了。\n二、 …"