Browsing the archives for the Develop category

寻Apache2下Discuz高性能配置方案

in Develop

服务器品牌 DELL 服务器型号 PE1850 cpu类型 Intel Xeon 2.80GHz cpu个数 2 内存条类型 512M 内存条个数 2 硬盘类型1 36G 硬盘个数1 1 操作系统:Linux centos2 2.6.18-92.el5 Apache 2.0 PHP 5.2.9 目前300并发,持续时间1小时 测试截图: 已安装Discuz7.0版,目前论坛并无帖子。 下午进行LoadRunner测试, 100用户并发时,响应时间在1.5s左右。 400用户并发时,响应时间约为3s,但每秒连接数一直处于170左右,无法继续上升。 此时,web服务器CPU占用70%-80% Db服务器为2%,基本无压力。 在网上看到一些文章,Apache在配置正确的情况下基本上可以处理每秒2K的并发请求,但今天的测试让我大跌眼镜。 响应时间也不够理想,况且这次的测试只是测了首页的访问,而且首页是做了缓存处理的。 最开始是怀疑httpd.conf中最大连接数没有设置正确,改动后重启Apache依然如此。 最令人担忧的是居高不下的CPU占用率。 希望有在Apache下配置Discuz经验的大虾们能给一个合理的配置方案。

19 Comments

accept-charset与Header P3P

in Develop

场景一: A网站全站均为UTF-8编码,B网站全站为GB2312编码。 A网站提供一段JS代码供B网站调用,该代码会动态生成一个FORM表单,以收集提交上来的数据。 B网站此时开始提交数据,但提交上来的中文均为乱码。 现象的产生是由于二个网站编码不一致而导致的,一般情况下使二个网站的编码一致即可。 如果无法统一编码该怎么办? FORM有一个accept-charset属性 <form method=”post” action=”…” accept-charset=”utf-8″> … </form> 测试成功,但在IE下不成功,需要一个HACK来解决: 在form的onsubmit事件触发时动态改变document的编码,即: onsubmit=”document.charset=’utf-8′;” 场景二: A网站提供一个页面供其它网站进行Iframe调用,该页面使用了SESSION,并进行了SESSION判断。 现象: B网站IFRAME了A网站的页面,总显示SESSION过期,但直接在浏览器中打开该页面却又是正常的。 这是由于浏览器的安全性所致,SESSION依赖于COOKIE,A与B是二个完全不同的域,A网站没法去读取B网站下的COOKIE,所以SESSION也就失效了。 解决办法: A网站的页面在输出头上附加一个P3P属性,值为CP=CAO PSA OUR即可。 如: Response.AddHeader(“P3P”, “CP=CAO PSA OUR”); if (Session[SESSIONKEY] == null) { //TODO:其它操作 } Discuz中的同步登录也这样实现的

7 Comments

PHP需要单例模式吗?

in Develop

先看看什么是单例模式。 单例模式的存在在一些情况下是比较有意义的,如BlogEngine的站点配置就是采用的单例模式,而且它的载入和保存的代码是相当经典的,有兴趣可以看看它的源代码。 由于asp.net是编译型的,所以单例一直会存在于这个应用程序的生命周期里,真正可以做到这个实例在应用程序生命周期中的唯一性。 php的单例模式的实现大致如下: 代码来自:http://www.cnblogs.com/cocowool/archive/2009/03/18/1415660.html 但,PHP是一种解释型的语言,在这里用单例好像看不出实际的用处,一旦整个页面执行完,变量也就消失了。 我接触PHP时间不长,以上写出来的只是在C#与PHP二种不同语言环境下对单例模式的认知,也许这个例子只是为了说明模式可以用很多种语言来实现,但并不意味着在各种语言环境下都能真正起作用。 asp.net中的单例是在整个应用程序域唯一。PHP中的单例只在整个页面周期内唯一

10 Comments

消除GD库绘制中文乱码

in Develop

诚如论坛上一位朋友所说: 一般刚开始用image函数库人都不知道使用这中方法来支持中文的! 我也在这个上面卡了好久。效果图:一定要用支持中文的字体,然后配合imagettftext函数来使用。 $font = ‘font/simhei.ttf’; //指定字体 $color = imagecolorallocate($img, 0,0,0); $count = count($txt); foreach($txt as $item) { imagettftext($img, 8, 0, $x, $y, $color, $font, $item); $y+=12; } 如果还乱码,请先检查是在绘制图片时出错还是绘制之前就乱码。如果绘制之前乱码可以用iconv先转换一下。另外,用mssql_connect连mssql2005时读取中文乱码还没解决。 先不弄了,看看刚到手的玩偶 顺便b4一下蓝色,论坛签名不让放图片,弄得我这个AD没法做了:)

4 Comments