<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[回忆未来[张宴]]]></title> 
<link>http://blog.s135.com/index.php</link> 
<description><![CDATA[服务器系统架构与底层研发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[回忆未来[张宴]]]></copyright>
<item>
<link>http://blog.s135.com/post/415/</link>
<title><![CDATA[“惠普Proliant DL380 G4服务器”挂接“惠普Modular Smart Array 500G2磁盘阵列柜”[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Cache与存储]]></category>
<pubDate>Wed, 17 Jun 2009 08:54:59 +0000</pubDate> 
<guid>http://blog.s135.com/post/415/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.06.17 转载请注明原文链接：<a href="http://blog.s135.com/post/415/" target="_blank">http://blog.s135.com/post/415/</a>]<br/><br/>　　正为视频、图片存储发愁，一个偶然的机会，获知公司在廊坊机房机架上有一台“300GB*14块硬盘”磁盘整列柜，竟然没人使用。周一申请了一辆公司的车，去廊坊机房将该盘阵拖了回来。<br/><br/>　　<strong>环境：</strong><br/><br/>　　一台“惠普Proliant DL380 G4服务器（2U机架式）”，已安装CentOS 5.3 64位操作系统；<br/>　　一台“惠普Modular Smart Array 500G2磁盘阵列柜”，插满14块标称300GB的SCSI硬盘；<br/>　　一块“惠普 Smart Array 642阵列卡”，插在“惠普Proliant DL380 G4服务器”；<br/>　　一根SCSI连接线，连接“惠普 Smart Array 642阵列卡”和“惠普Modular Smart Array 500G2磁盘阵列柜”。<br/><br/>　　<a href="http://blog.s135.com/attachment.php?fid=19" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=19" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><hr/><br/>　　<strong>配置步骤：</strong><br/><br/>　　1、在“惠普Proliant DL380 G4服务器”PCI插槽中安装一块Smart Array 642阵列卡，用SCSI线连接“惠普MSA 500G2磁盘阵列柜”。<br/><br/>　　<a href="http://blog.s135.com/attachment.php?fid=20" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=20" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　2、在以下网址点击右侧“Support”栏目中的“Support matrices”，查看“HP Proliant DL380 G4服务器”支持的“HP SmartStart CD光盘类型”：<br/>　　<a href="http://www.hp.com/servers/smartstart" target="_blank">http://www.hp.com/servers/smartstart</a><br/><br/>　　<a href="http://blog.s135.com/attachment.php?fid=16" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=16" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　3、通过以下网址下载 HP SmartStart 8.25 x64 光盘，解压后有一个ISO镜像文件，将它刻录到CD刻录光盘上：<br/>　　<a href="ftp://ftp.hp.com/pub/softlib2/software1/cd/p1760479716/v51549/smartstart-8.25-0-x64.zip" target="_blank">ftp://ftp.hp.com/pub/softlib2/software1/cd/p1760479716/v51549/smartstart-8.25-0-x64.zip</a><br/><br/>　　4、将SmartStart光盘插入“惠普Proliant DL380 G4服务器”的光驱，选择服务器开机从光盘启动，在光盘引导后的图像界面“Array Configuration Utility”中，会显示所有的磁盘阵列卡，包括“惠普Proliant DL380 G4服务器”自带的阵列卡和“惠普MSA 500G2磁盘阵列柜”的阵列卡。<br/>　　(1)、点击选择“MSA 500G2”阵列卡。先选择创建磁盘组（Create Array），14块硬盘全选上；<br/>　　(2)、再选择创建逻辑盘（Create Logical Drive）。因为这里插了14块标称300GB的SCSI硬盘（实际容量(300GB / 1.024 / 1.024 / 1.024) * 14 / 1024 ≈ 3.8TB），而“惠普MSA 500G2磁盘阵列柜”的每块逻辑盘最大只能支持2TB的数据容量，所以至少需要创建两块逻辑盘，第一块逻辑盘选择2TB，第二块逻辑盘使用默认值，即剩余大小。每块逻辑盘可选择做RAID 0、RAID 1、RAID 5和RAID 6，缺省配置是RAID 6（可损坏任意两颗硬盘，但性能比RAID 5略低8%～15%）。因为是图形界面，这一部分操作比较简单，就不再详细描述。<br/><br/>　　5、使用SmartStart光盘创建完逻辑盘之后，重启“惠普Proliant DL380 G4服务器”。<br/><br/>　　6、重启后，输入root帐号密码登入CentOS 5.3 x86_64系统。<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/%25E6%2583%25A0%25E6%2599%25AE/" rel="tag">惠普</a> , <a href="http://blog.s135.com/tags/hp/" rel="tag">hp</a> , <a href="http://blog.s135.com/tags/%25E7%25A3%2581%25E7%259B%2598%25E9%2598%25B5%25E5%2588%2597%25E6%259F%259C/" rel="tag">磁盘阵列柜</a> , <a href="http://blog.s135.com/tags/%25E7%259B%2598%25E9%2598%25B5/" rel="tag">盘阵</a> , <a href="http://blog.s135.com/tags/scsi/" rel="tag">scsi</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/414/</link>
<title><![CDATA[从“军事战争”总结了一些服务器架构思考[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[系统架构与硬件]]></category>
<pubDate>Thu, 28 May 2009 07:31:02 +0000</pubDate> 
<guid>http://blog.s135.com/post/414/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.05.28 转载请注明原文链接：<a href="http://blog.s135.com/post/414/" target="_blank">http://blog.s135.com/post/414/</a>]<br/><br/>　　“客户端访问”与“服务器端响应”，犹如一场战争。初期，访问量较小，弄几台服务器随便拉起一只队伍，就能抵抗住客户端的进攻。慢慢的，访问量大起来，这时候，就需要讲究排兵布阵、战略战术、多兵种协调作战。于是，开始有了负载均衡服务器、Web服务器、缓存服务器、数据库服务器、存储服务器等多兵种；开始有了系统架构等战略战术。随着新项目和运营需求的越来越多，我们开始了多线作战。慢慢地，我总结了以下一些思考：<br/><br/>　　<strong>1、“收编绿林队伍”与“自己招兵买马”：</strong><br/><br/>　　两者的关系就犹如“使用开源软件、框架”与“自己开发模块、写框架”，如果已有的开源软件、框架、架构能够较好地用于自己的项目，并便于扩展，则优先使用开源软件；如果没有现成的东西，或者已有的开源软件性能不高、扩展性差、学习成本高，则可以取长补短，在项目中打造自己的“队伍”。<br/><br/><br/>　　<strong>2、适当利用“雇佣军”：</strong><br/><br/>　　在多个项目同时进行时，不要认为自己能打赢每一场战斗，而每一场战斗都由自己亲自去打。确实，我相信很多人能够打赢一场场战斗，却只有少数人能够打赢一场战争。前暴雪北方“四大佬”创建的旗舰工作室的倒闭，印证了这样一个事实：一群天才，却没有让一个划时代意义的游戏诞生。旗舰工作室放着捷径不走却事必躬亲，自己做客户端、自己做语聊系统、自己做图像引擎、自己做客服系统，最终自己被自己给拖垮了。<br/><br/>　　不要让战线拉得太广，适当利用“雇佣军”，项目中的一些非重要、非核心的组成部分可以购买其他公司的成熟产品与服务，时间、费用、维护成本可能要更低。最近，我工作中的两项服务使用了“雇佣军”：(1)、购买ChinaCache CDN的Flash Media Server点播加速服务，支撑金山游戏视频宣传站点，节省了部署多节点的成本和时间；(2)、购买快网的智能DNS解析服务，来做金山游戏官网动态内容“北京多线、珠海电信、天津网通”三个机房服务器的智能DNS解析服务，节省了收集、整理，将来更新维护IP信息等工作。<br/><br/><br/>　　<strong>3、打造“高技术兵器”：</strong><br/><br/>　　现代战争的特点都拥一个有共同的前提那就是：都不可能离开“高技术兵器”。同样，要想承担高并发访问，而又希望系统架构简单一点、程序开发快捷一点，那么，则需要一款服务器端的“高技术兵器”。Web 2.0网站主要组成部分有内容页和列表页，内容页可以采用key-value形式的Memcached、Squid等开源产品来实现缓存，高并发访问下需要实时更新的列表页缓存，目前还没有合适的开源产品来解决。MySQL等数据库在高并发连接、大数据记录情况下性能低下，实时更新的列表页，成为最主要的瓶颈。我目前正在基于一些开源类库，开发的一款简单关系型数据库，将实现MySQL单表拥有的大部分复杂条件查询功能，并将达到单表千万级以上记录下，Memcached 60%左右的并发查询性能，预计6月6日开发完成进入测试阶段。<br/><br/>　　<strong>4、精简军队，提高战斗力：</strong><br/><br/>　　军队越多，补给、后勤等开支也会越大，同样，服务器越多，维护成本、托管成本、复杂度也越高。所以，服务器不是越多越好，在能够保证容错性、避免单点故障的情况下，如果能用一台高配置服务器来解决的事，不要同两台低配置的服务器来干。<br/><br/>　　传统的系统架构只不过围绕负载均衡设备或服务器、Web服务器集群、数据库服务器集群、搜索引擎服务器集群、分布式存储服务器集群、缓存系统服务器集群等等，技术含量并不是特别高，只不过很多人没有生产环境的机会去实践而已。随着内存价格的下降，单台服务器扩充到64G内存的事情不再罕见；Intel将会在下周面向高端服务器领域发布代号为Nehalem-EX的8核XEON处理器。随着硬件性能的不断提高，我预测，将来的系统架构与服务器集群将不再从服务类型上划分，而将按“CPU密集型服务器集群”、“内存密集型服务器集群”、“存储密集型服务器集群”划分。我现在所设计的架构与开发的服务器端程序，也逐渐向后者转移。<br/><br/>　　最近，Google的工程师Luiz André Barroso and Urs Hölzle发表了一篇长达120页的论文，提出了一个数据中心就是一台计算机（The Datacenter as a Computer - An Introduction to the Design of Warehouse-Scale Machines ）<br/><br/>............<br/>
]]>
</description>
</item><item>
<link>http://blog.s135.com/nginx_php_v5/</link>
<title><![CDATA[Nginx 0.7.x + PHP 5.2.10（FastCGI）搭建胜过Apache十倍的Web服务器（第5版）[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Wed, 06 May 2009 05:40:31 +0000</pubDate> 
<guid>http://blog.s135.com/nginx_php_v5/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v5.4 最后修改：<span style="color: #FF0000;">2009.06.26</span> 转载请注明原文链接：<a href="http://blog.s135.com/nginx_php_v5/" target="_blank">http://blog.s135.com/nginx_php_v5/</a>]<br/><br/>　　前言：本文是我撰写的关于搭建“Nginx + PHP（FastCGI）”Web服务器的第5篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一，为推动 Nginx 在国内的发展产生了积极的作用。这是一篇关于Nginx 0.7.x系列版本的文章，安装、配置方式与第4篇文章相差不大，但增加了MySQL安装配置的信息、<strong>PHP 5.2.10 的 php-fpm 补丁</strong>。Nginx 0.7.x系列版本虽然为开发版，但在很多大型网站的生产环境中已经使用。<br/><br/>　　链接：《<a href="post/297/" target="_blank">2007年9月的第1版</a>》、《<a href="post/314/" target="_blank">2007年12月的第2版</a>》、《<a href="post/351/" target="_blank">2008年6月的第3版</a>》、《<a href="nginx_php_v4/" target="_blank">2008年8月的第4版</a>》<br/><br/>　　<a href="http://blog.s135.com/attachment/200806/nginx.png" target="_blank"><img src="http://blog.s135.com/attachment/200806/nginx.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　<a href="http://www.nginx.net/" target="_blank">Nginx</a> ("engine x") 是一个高性能的 HTTP 和反向代理服务器，也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。<br/><br/>　　Nginx 超越 Apache 的高性能和稳定性，使得国内使用 Nginx 作为 Web 服务器的网站也越来越多，其中包括<a href="http://blog.sina.com.cn/" target="_blank">新浪博客</a>、<a href="http://v.sina.com.cn/" target="_blank">新浪播客</a>、<a href="http://news.163.com/" target="_blank">网易新闻</a>等门户网站频道，<a href="http://www.6.cn/" target="_blank">六间房</a>、<a href="http://www.56.com/" target="_blank">56.com</a>等视频分享网站，<a href="http://www.discuz.net/" target="_blank">Discuz!官方论坛</a>、<a href="http://www.newsmth.net/" target="_blank">水木社区</a>等知名论坛，<a href="http://www.douban.com/" target="_blank">豆瓣</a>、<a href="http://www.yupoo.com/" target="_blank">YUPOO相册</a>、<a href="http://www.hainei.com/" target="_blank">海内SNS</a>、<a href="http://www.xunlei.com/" target="_blank">迅雷在线</a>等新兴Web 2.0网站。<br/><br/><hr/><br/>　　Nginx 的官方中文维基：<a href="http://wiki.nginx.org/NginxChs" target="_blank">http://wiki.nginx.org/NginxChs</a><br/><br/><hr/><br/>　　在高并发连接的情况下，Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果，<strong>Nginx 0.7.61 + PHP 5.2.10 (FastCGI) 可以承受3万以上的并发连接数，相当于同等环境下Apache的10倍</strong>。<br/><br/>　　根据我的经验，4GB内存的服务器+Apache（prefork模式）一般只能处理3000个并发连接，因为它们将占用3GB以上的内存，还得为系统预留1GB的内存。我曾经就有两台Apache服务器，因为在配置文件中设置的MaxClients为4000，当Apache并发连接数达到3800时，导致服务器内存和Swap空间用满而崩溃。<br/><br/>　　而这台 Nginx 0.7.61 + PHP 5.2.10 (FastCGI) 服务器在3万并发连接下，开启的10个Nginx进程消耗150M内存（15M*10=150M），开启的64个php-cgi进程消耗1280M内存（20M*64=1280M），加上系统自身消耗的内存，总共消耗不到2GB内存。如果服务器内存较小，完全可以只开启25个php-cgi进程，这样php-cgi消耗的总内存数才500M。<br/><br/>　　在3万并发连接下，访问Nginx 0.7.61 + PHP 5.2.10 (FastCGI) 服务器的PHP程序，仍然速度飞快。下图为Nginx的状态监控页面，显示的活动连接数为28457（关于Nginx的监控页配置，会在本文接下来所给出的Nginx配置文件中写明）：<br/><br/>　　<a href="http://blog.s135.com/attachment/200712/nginx_status.png" target="_blank"><img src="http://blog.s135.com/attachment/200712/nginx_status.png" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　我生产环境下的两台Nginx + PHP5（FastCGI）服务器，跑多个一般复杂的纯PHP动态程序，单台Nginx + PHP5（FastCGI）服务器跑PHP动态程序的处理能力已经超过“<span style="color: #FF0000;">700次请求/秒</span>”，相当于每天可以承受6000万（700*60*60*24=60480000）的访问量（<a href="read.php/334.htm" target="_blank">更多信息见此</a>），而服务器的系统负载也不高：<br/><br/>　　<a href="http://blog.s135.com/attachment/200803/nginx_php_la.gif" target="_blank"><img src="http://blog.s135.com/attachment/200803/nginx_php_la.gif" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><hr/><br/>　　下面是用100个并发连接分别去压生产环境中同一负载均衡器VIP下、提供相同服务的两台服务器，一台为Nginx，另一台为Apache，Nginx每秒处理的请求数是Apache的两倍多，Nginx服务器的系统负载、CPU使用率远低于Apache：<br/><br/>　　你可以将连接数开到10000～30000，去压Nginx和Apache上的phpinfo.php，这是用浏览器访问Nginx上的phpinfo.php一切正常，而访问Apache服务器的phpinfo.php，则是该页无法显示。4G内存的服务器，即使再优化，Apache也很难在“webbench -c 30000 -t 60 <a href="http://xxx.xxx.xxx.xxx/phpinfo.php" target="_blank">http://xxx.xxx.xxx.xxx/phpinfo.php</a>”的压力情况下正常访问，而调整参数优化后的Nginx可以。<br/><br/>　　webbench 下载地址：<a href="http://blog.s135.com/post/288/" target="_blank">http://blog.s135.com/post/288/</a><br/><br/>　　注意：webbench 做压力测试时，该软件自身也会消耗CPU和内存资源，为了测试准确，请将 webbench 安装在别的服务器上。<br/><br/>　　测试结果：##### Nginx + PHP #####<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a href="http://192.168.1.21/phpinfo.php" target="_blank">http://192.168.1.21/phpinfo.php</a><br/>Webbench - Simple Web Benchmark 1.5<br/>Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.<br/><br/>Benchmarking: GET <a href="http://192.168.1.21/phpinfo.php" target="_blank">http://192.168.1.21/phpinfo.php</a><br/>100 clients, running 30 sec.<br/><br/>Speed=102450 pages/min, 16490596 bytes/sec.<br/>Requests: 51225 susceed, 0 failed.<br/><br/>top - 14:06:13 up 27 days,&nbsp;&nbsp;2:25,&nbsp;&nbsp;2 users,&nbsp;&nbsp;load average: 14.57, 9.89, 6.51<br/>Tasks: 287 total,&nbsp;&nbsp; 4 running, 283 sleeping,&nbsp;&nbsp; 0 stopped,&nbsp;&nbsp; 0 zombie<br/>Cpu(s): 49.9% us,&nbsp;&nbsp;6.7% sy,&nbsp;&nbsp;0.0% ni, 41.4% id,&nbsp;&nbsp;1.1% wa,&nbsp;&nbsp;0.1% hi,&nbsp;&nbsp;0.8% si<br/>Mem:&nbsp;&nbsp; 6230016k total,&nbsp;&nbsp;2959468k used,&nbsp;&nbsp;3270548k free,&nbsp;&nbsp; 635992k buffers<br/>Swap:&nbsp;&nbsp;2031608k total,&nbsp;&nbsp;&nbsp;&nbsp; 3696k used,&nbsp;&nbsp;2027912k free,&nbsp;&nbsp;1231444k cached</div></div><br/><br/>　　测试结果：#####&nbsp;&nbsp;Apache + PHP #####<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">[root@localhost webbench-1.5]# webbench -c 100 -t 30 <a href="http://192.168.1.27/phpinfo.php" target="_blank">http://192.168.1.27/phpinfo.php</a><br/>Webbench - Simple Web Benchmark 1.5<br/>Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.<br/><br/>Benchmarking: GET <a href="http://192.168.1.27/phpinfo.php" target="_blank">http://192.168.1.27/phpinfo.php</a><br/>100 clients, running 30 sec.<br/><br/>Speed=42184 pages/min, 31512914 bytes/sec.<br/>Requests: 21092 susceed, 0 failed.<br/><br/>top - 14:06:20 up 27 days,&nbsp;&nbsp;2:13,&nbsp;&nbsp;2 users,&nbsp;&nbsp;load average: 62.15, 26.36, 13.42<br/>Tasks: 318 total,&nbsp;&nbsp; 7 running, 310 sleeping,&nbsp;&nbsp; 0 stopped,&nbsp;&nbsp; 1 zombie<br/>Cpu(s): 80.4% us, 10.6% sy,&nbsp;&nbsp;0.0% ni,&nbsp;&nbsp;7.9% id,&nbsp;&nbsp;0.1% wa,&nbsp;&nbsp;0.1% hi,&nbsp;&nbsp;0.9% si<br/>Mem:&nbsp;&nbsp; 6230016k total,&nbsp;&nbsp;3075948k used,&nbsp;&nbsp;3154068k free,&nbsp;&nbsp; 379896k buffers<br/>Swap:&nbsp;&nbsp;2031608k total,&nbsp;&nbsp;&nbsp;&nbsp;12592k used,&nbsp;&nbsp;2019016k free,&nbsp;&nbsp;1117868k cached</div></div><br/><br/><hr/><br/>　　为什么Nginx的性能要比Apache高得多？这得益于Nginx使用了最新的epoll（Linux 2.6内核）和kqueue（freebsd）网络I/O模型，而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。<br/><br/>　　处理大量的连接的读写，Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别：<br/><br/>　　假设你在大学读书，住的宿舍楼有很多间房间，你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找，直到找到你为止。而epoll版宿管大妈会先记下每位同学的房间号，你的朋友来时，只需告诉你的朋友你住在哪个房间即可，不用亲自带着你的朋友满大楼找人。如果来了10000个人，都要找自己住这栋楼的同学时，select版和epoll版宿管大妈，谁的效率更高，不言自明。同理，在高并发服务器中，轮询I/O是最耗时间的操作之一，select和epoll的性能谁的性能更高，同样十分明了。<br/><br/><hr/><br/>　　安装步骤：<br/>　　（系统要求：Linux 2.6+ 内核，本文中的Linux操作系统为CentOS 5.3，另在RedHat AS4上也安装成功）<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/linux/" rel="tag">linux</a> , <a href="http://blog.s135.com/tags/php/" rel="tag">php</a> , <a href="http://blog.s135.com/tags/mysql/" rel="tag">mysql</a> , <a href="http://blog.s135.com/tags/nginx/" rel="tag">nginx</a> , <a href="http://blog.s135.com/tags/apache/" rel="tag">apache</a> , <a href="http://blog.s135.com/tags/html/" rel="tag">html</a> , <a href="http://blog.s135.com/tags/centos/" rel="tag">centos</a> , <a href="http://blog.s135.com/tags/http/" rel="tag">http</a> , <a href="http://blog.s135.com/tags/apc/" rel="tag">apc</a> , <a href="http://blog.s135.com/tags/xcache/" rel="tag">xcache</a> , <a href="http://blog.s135.com/tags/memcached/" rel="tag">memcached</a> , <a href="http://blog.s135.com/tags/httpd/" rel="tag">httpd</a> , <a href="http://blog.s135.com/tags/memcache/" rel="tag">memcache</a> , <a href="http://blog.s135.com/tags/epoll/" rel="tag">epoll</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/412/</link>
<title><![CDATA[Sun发布了MySQL 5.4，比MySQL 5.1快了59%]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Fri, 24 Apr 2009 11:10:32 +0000</pubDate> 
<guid>http://blog.s135.com/post/412/</guid> 
<description>
<![CDATA[ 
	　　除了 Oracle 买了 Sun 这件事之外，还有一件重要的事，就是 Sun 发布了 MySQL 5.4 预览版。根据其 EAStress2004 benchmark 测试，MySQL 5.4 比 MySQL 5.1 快了 59%。有空我下载下来自己做个测试。<br/><br/>　　更多内容见：<br/><br/>　　《A Quick Look at MySQL 5.4》：<a href="http://dev.mysql.com/tech-resources/articles/mysql-54.html" target="_blank">http://dev.mysql.com/tech-resources/articles/mysql-54.html</a><br/><br/>　　MySQL 5.4 下载地址：<a href="http://dev.mysql.com/downloads/mysql/5.4.html" target="_blank">http://dev.mysql.com/downloads/mysql/5.4.html</a><br/><br/>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/411/</link>
<title><![CDATA[Linux下PHP 5.2 Oracle客户端扩展（OCI8）安装[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[数据库技术]]></category>
<pubDate>Tue, 21 Apr 2009 04:53:20 +0000</pubDate> 
<guid>http://blog.s135.com/post/411/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.04.21 转载请注明原文链接：<a href="http://blog.s135.com/post/411/" target="_blank">http://blog.s135.com/post/411/</a>]<br/><br/>　　<strong>1、下载Oracle即时客户端程序包</strong> — Basic： 运行 OCI、OCCI 和 JDBC-OCI 应用程序所需的所有文件<br/><br/>　　①、打开以下网址（本文以32位版为例）：<br/>　　（Linux 32位版）<a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html" target="_blank">http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html</a><br/>　　（Linux 64位版）<a href="http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxx86_64soft.html" target="_blank">http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxx86_64soft.html</a><br/><br/>　　②、下载以下几个文件：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.rpm<br/>oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm<br/>oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.i386.rpm</div><br/><br/>　　<strong>2、安装Oracle即时客户端程序包</strong><br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">rpm -ivh oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.rpm oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.i386.rpm<br/>echo "/usr/lib/oracle/11.1/client/lib/" > /etc/ld.so.conf.d/oracle_client.conf<br/>/sbin/ldconfig</div><br/><br/>　　<strong>3、安装OCI8 PHP扩展</strong>（使用PHP自带的OCI8，假设PHP程序安装在/usr/local/webserver/php/）<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">yum install libaio<br/>wget <a href="http://pecl.php.net/get/oci8-1.3.5.tgz" target="_blank">http://pecl.php.net/get/oci8-1.3.5.tgz</a><br/>tar zxvf oci8-1.3.5.tgz<br/>cd oci8-1.3.5/<br/>/usr/local/webserver/php/bin/phpize<br/>CFLAGS="-I/usr/include/oracle/11.1/client/"<br/>CXXFLAGS="-I/usr/include/oracle/11.1/client/"<br/>./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-oci8=/usr/lib/oracle/11.1/client/<br/>make<br/>make install</div><br/><br/>　　<strong>4、修改PHP配置文件</strong>（/usr/local/webserver/php/etc/php.ini）<br/>在extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/"后增加一行：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">extension = "oci8.so"</div><br/><br/>　　<strong>5、重启PHP</strong><br/><br/>　　<strong>6、创建一个phpinfo.php文件（内容如下）并通过Web访问，如果有“oci8”这一项，则表明安装成功。</strong><br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">&lt;?php<br/>phpinfo();<br/>?&gt;</div><br/>　　<a href="http://blog.s135.com/attachment.php?fid=12" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=12" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>Tags - <a href="http://blog.s135.com/tags/php/" rel="tag">php</a> , <a href="http://blog.s135.com/tags/oracle/" rel="tag">oracle</a> , <a href="http://blog.s135.com/tags/oci8/" rel="tag">oci8</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/410/</link>
<title><![CDATA[珠海金山软件之行[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[系统架构与硬件]]></category>
<pubDate>Sun, 19 Apr 2009 15:56:59 +0000</pubDate> 
<guid>http://blog.s135.com/post/410/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.04.19 转载请注明原文链接：<a href="http://blog.s135.com/post/410/" target="_blank">http://blog.s135.com/post/410/</a>]<br/><br/>　　<strong>2009年4月14日（星期二）</strong><br/><br/>　　下班后，和同事打的到首都国际机场，乘21:10起飞的中国南方航空CZ3734航班飞往珠海。这也是我第一次坐飞机。<br/><br/>　　波音737穿越着宁静的天空，云端望月的景象，罕见而优美。经过的三个小时的飞行，掠过了大半个中国，飞机降落在珠海三灶机场。<br/><br/>　　走出飞机，打的前往吉大区的如家快捷酒店，沿途海风扑面，湿气弥漫，与北京的干燥行成鲜明的对比。<br/><br/><hr/><br/>　　<strong>2009年4月15日（星期三）</strong><br/><br/>　　上午10点，我们去了珠海金山软件公司，在“万花谷”会议室跟西山居工作室开了个小会，随后参观了三楼的《剑侠世界》研发团队和四楼的《剑侠情缘网络版3》研发团队，向他们请教了100多人协作开发的项目管理经验。<br/><br/>　　下午，跟金山网游公司CTO的会议，是我主要关心的议题，以下几项收获也不错：<br/><br/>　　1、我所设计的“广州电信机房、天津网通机房、北京电信通多线机房”三个核心IDC的系统架构得以通过，只是做了点小调整，将“广州电信机房”换成了“珠海电信机房”，因为金山享有珠海电信在带宽和线路上的特殊待遇。<br/><br/>　　<a href="http://blog.s135.com/attachment.php?fid=2" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=2" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><br/>　　PS：百度网页搜索前端服务器也分布在三个机房：北京电信机房、北京网通机房、北京长城宽带多线机房。<br/><br/>　　全国所有电信用户访问 <a href="http://www.baidu.com" target="_blank">www.baidu.com</a> 将被解析到以下两个VIP：<br/>　　<a href="http://220.181.6.19" target="_blank">220.181.6.19</a> （北京市·电信）<br/>　　<a href="http://220.181.6.18" target="_blank">220.181.6.18 </a>（北京市·电信）<br/><br/>　　全国所有网通用户访问 <a href="http://www.baidu.com" target="_blank">www.baidu.com</a> 将被解析到以下两个VIP：<br/>　　<a href="http://202.108.22.5" target="_blank">202.108.22.5</a> （北京市·网通）<br/>　　<a href="http://202.108.22.43" target="_blank">202.108.22.43 </a>（北京市·网通）<br/><br/>　　全国铁通、教育网等其他访问 <a href="http://www.baidu.com" target="_blank">www.baidu.com</a> 将被解析到以下两个VIP：<br/>　　<a href="http://119.75.213.50" target="_blank">119.75.213.50 </a>（北京市·长城宽带）<br/>　　<a href="http://119.75.213.51" target="_blank">119.75.213.51 </a>（北京市·长城宽带）<br/><br/><hr/><br/>　　2、获批了20台服务器。搭建我三个IDC的架构平台，硬件资源得以满足，剩下要解决的就是这20台服务器尽快到位的问题了。<br/><br/><hr/><br/>　　3、允许了将来购买 Adobe 即将推出的 Flash Media Server 4.0 授权，利用 Flash Player 10 和 RTMFP协议（支持P2P）提供 FLV/MP4(H264) 视频流媒体点播服务。<br/><br/>　　目前逍遥网《<a href="post/409/" target="_blank">基于开源Flash Server：Red5构建RTMP流媒体播放平台</a>》，采用的是 RTMP 协议，生产环境（剑网3相关视频：<a href="http://jx3.xoyo.com/xgxz/video/" target="_blank">http://jx3.xoyo.com/xgxz/video/</a>）平均每个视频播放所消耗的带宽是25KB/秒，100M独享带宽可以支撑500人同时在线观看。将来采用 RTMFP 协议进行 Flash P2P 视频点播服务，将大大地节省带宽。<br/><br/>　　RTMFP 是 Real‐Time Media Flow Protocol的缩写，是Adobe推出的一种新的通信协议，这种通信协议可以让 Flash 客户端直接和另外一个Flash 客户端之间进行数据通信，也就是常说的P2P的方式进行通信。<br/><br/>　　RTMFP 将会大大地减少音视频直播、点播、多人在线游戏等应用的网络带宽的消耗，减轻服务器的负担。因为很多数据都是客户端之间直接传输了，无须再经过服务器中转了。RTMFP由于使用了UDP网络协议，所以相对之前的TCP协议在数据传输效率上也会大大提高，这种优势在音视频数据传输方面是非常明显的。<br/><br/>　　下面的示意图表现了RTMFP和RTMP的不同之处：<br/><br/>............<br/>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/409/</link>
<title><![CDATA[基于开源Flash Server：Red5构建RTMP流媒体播放平台[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[其他Unix技术]]></category>
<pubDate>Mon, 13 Apr 2009 15:13:12 +0000</pubDate> 
<guid>http://blog.s135.com/post/409/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.04.13 转载请注明原文链接：<a href="http://blog.s135.com/post/409/" target="_blank">http://blog.s135.com/post/409/</a>]<br/><br/>　　上周五，我们基于开源Flash Server：Red5（<a href="http://osflash.org/red5" target="_blank">http://osflash.org/red5</a>）的Flash流媒体服务平台上线，内容涉及视频上传、视频分发、调用接口、Flash播放器等。<br/><br/>　　<strong>一、Flash RTMP流媒体播放演示</strong>（播放时进度条可以自由拖动）：<br/><br/><div>　　<object id="xoyovideo" width="480" height="300" ><param name="allowScriptAccess" value="always" /><embed pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://api.v.xoyo.com/external/player.swf?config=http://api.v.xoyo.com/external/video-22.swf" type="application/x-shockwave-flash" name="xoyovideo" allowFullScreen="true" allowScriptAccess="always" width="480" height="300"></embed></object></div><br/>　　生产环境更多 Flash RTMP 流媒体视频演示：<a href="http://jx3.xoyo.com/xgxz/video/" target="_blank">http://jx3.xoyo.com/xgxz/video/</a><br/><br/><hr/><br/>　　<strong>二、安装步骤简要说明：</strong><br/>　　①、安装JDK<br/>　　打开<a href="http://java.sun.com/javase/downloads/" target="_blank">http://java.sun.com/javase/downloads/</a>，下载最新的Java SE Development Kit (JDK)，安装在/usr/local/jdk/下。<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">chmod +x jdk-6u13-linux-i586.bin<br/>./jdk-6u13-linux-i586.bin</div><br/><br/>　　②、安装Red5<br/>　　打开<a href="http://osflash.org/red5/070final" target="_blank">http://osflash.org/red5/070final</a>，下载red5-0.7.0.tar.gz，解压缩后执行./red5.sh，然后访问<a href="http://yourdomain:5080/" target="_blank">http://yourdomain:5080/</a>，有演示。<br/><br/><hr/><br/>　　<strong>三、服务器带宽消耗比较：</strong><br/>　　①、客户端 1.5M ADSL 环境，HTTP 方式播放单个视频，服务器所消耗的带宽：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">[root@localhost ~]# ./net.sh eth0 1<br/>IN: 3318 Byte/s OUT: 259984 Byte/s<br/>IN: 3486 Byte/s OUT: 249470 Byte/s<br/>IN: 3332 Byte/s OUT: 259984 Byte/s<br/>IN: 3090 Byte/s OUT: 252528 Byte/s<br/>IN: 3000 Byte/s OUT: 252474 Byte/s<br/>IN: 3000 Byte/s OUT: 253976 Byte/s<br/>IN: 2940 Byte/s OUT: 255478 Byte/s<br/>IN: 3004 Byte/s OUT: 252474 Byte/s<br/>IN: 3452 Byte/s OUT: 252528 Byte/s<br/>IN: 3270 Byte/s OUT: 260038 Byte/s<br/>IN: 3586 Byte/s OUT: 252474 Byte/s</div><br/><br/>　　②、客户端 1.5M ADSL 环境，RTMP 流媒体方式播放单个视频，服务器所消耗的带宽：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">[root@localhost ~]# ./net.sh eth0 1<br/>IN: 3900 Byte/s OUT: 27878 Byte/s<br/>IN: 4200 Byte/s OUT: 30868 Byte/s<br/>IN: 4380 Byte/s OUT: 27801 Byte/s<br/>IN: 4080 Byte/s OUT: 29965 Byte/s<br/>IN: 4080 Byte/s OUT: 26450 Byte/s<br/>IN: 3960 Byte/s OUT: 27143 Byte/s<br/>IN: 3000 Byte/s OUT: 10061 Byte/s<br/>IN: 3960 Byte/s OUT: 16166 Byte/s<br/>IN: 3660 Byte/s OUT: 26480 Byte/s<br/>IN: 4020 Byte/s OUT: 23127 Byte/s</div><br/><br/>　　HTTP 方式播放，如果服务器端不限速，客户端的带宽越大，服务器消耗的带宽也越大，但限速又会影响用户体验；<br/>　　RTMP 流媒体方式播放，只要客户端达到最低带宽要求，不管客户端的带宽如何，服务器消耗的带宽都一样。<br/><br/>　　如果播放10M以内大小的视频，HTTP 能够在较短的时间内下载完视频，能够降低并发观看用户数；<br/>　　如果播放10M以上大小的视频，RTMP 要比 HTTP 方式节省不少带宽。<br/><br/>　　RTMP 播放时进度条可以自由拖动，虽然Lighttpd和Nginx目前也可以使用somevideo.flv?start=xxx的方式从指定位置下载视频，但还是不如 RTMP 灵活。<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/red5/" rel="tag">red5</a> , <a href="http://blog.s135.com/tags/rtmp/" rel="tag">rtmp</a> , <a href="http://blog.s135.com/tags/flash/" rel="tag">flash</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/407/</link>
<title><![CDATA[Google 构建大规模信息检索系统中的挑战]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[系统架构与硬件]]></category>
<pubDate>Sat, 04 Apr 2009 16:07:09 +0000</pubDate> 
<guid>http://blog.s135.com/post/407/</guid> 
<description>
<![CDATA[ 
	　　以下是 Google 检索系统的架构师、Google Mapreduce 的发明者 <a href="http://research.google.com/people/jeff/index.html" target="_blank">Jeff Dean</a> 在 WSDM 2009 上的主题演讲：《<a href="http://research.google.com/people/jeff/WSDM09-keynote.pdf" target="_blank">Challenges in Building Large-Scale Information Retrieval Systems</a>》。在这个主题演讲中，<a href="http://research.google.com/people/jeff/index.html" target="_blank">Jeff Dean</a> 讲述了 Google 在10年中，Google 检索系统的演变和发展。<br/><br/>　　英文原文：<a href="http://research.google.com/people/jeff/WSDM09-keynote.pdf" target="_blank">http://research.google.com/people/jeff/WSDM09-keynote.pdf</a><br/>　　演讲视频：<a href="http://videolectures.net/wsdm09_dean_cblirs/" target="_blank">http://videolectures.net/wsdm09_dean_cblirs/</a><br/><br/>　　中文译文（由银杏泰克有限公司郝培强翻译）：<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/google/" rel="tag">google</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/406/</link>
<title><![CDATA[CentOS 5.2下重新编译PHP增加LDAP支持[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Tue, 31 Mar 2009 09:30:37 +0000</pubDate> 
<guid>http://blog.s135.com/post/406/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.03.31 转载请注明原文链接：<a href="http://blog.s135.com/post/406/" target="_blank">http://blog.s135.com/post/406/</a>]<br/><br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">yum install openldap openldap-devel nss_ldap openldap-clients openldap-servers<br/><br/>cd php-5.2.8/<br/>./configure 省略参数 --with-ldap --with-ldap-sasl<br/>make ZEND_EXTRA_LIBS='-liconv'<br/>make install</div>
]]>
</description>
</item><item>
<link>http://blog.s135.com/fetion_api/</link>
<title><![CDATA[中国移动飞信免费发短信API接口（第三方 Fetion API）[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[其他Unix技术]]></category>
<pubDate>Sun, 22 Mar 2009 02:35:39 +0000</pubDate> 
<guid>http://blog.s135.com/fetion_api/</guid> 
<description>
<![CDATA[ 
	　　[文章作者：张宴 本文版本：v1.0 最后修改：2009.03.22 转载请注明原文链接：<a href="http://blog.s135.com/fetion_api/" target="_blank">http://blog.s135.com/fetion_api/</a>]<br/><br/>　　<a href="http://www.fetion.com.cn/" target="_blank">飞信</a>是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的，基于手机应用以及与Internet深度互通的即时通讯产品，可免费给好友发送短信。<br/><br/>　　1、下载中国移动飞信PC客户端软件（<a href="http://www.fetion.com.cn/downloads/pc.aspx" target="_blank">http://www.fetion.com.cn/downloads/pc.aspx</a>），并注册开通飞信。注册成为飞信用户，下载飞信PC客户端、使用PC客户端基本功能，不收取费用。<br/>　　2、通过PC客户端，邀请并添加免费短信接收方的手机号码（仅限中国移动）到您的飞信好友，该手机号需要通过通过PC客户端、或回复短信接受您的邀请；<br/>　　3、通过 <a href="http://sms.api.bz/" target="_blank">http://sms.api.bz/</a> 提供的 API 接口，即可免费给飞信好友或给你自己的手机发短信。利用本API接口可进行日程提醒、服务器监控、报警、故障通知或短信自动控制等功能。<br/><br/><hr/><br/>　　<span style="color: #FF0000;">飞信免费发短信API接口在线演示页面：</span><br/><br/>　　<a href="http://sms.api.bz/" target="_blank">http://sms.api.bz/</a><br/><br/>　　<a href="https://sms.api.bz/" target="_blank">https://sms.api.bz/</a> （新增HTTPS加密接口，采用 EssentialSSL CA 颁发的可信任SSL证书）<br/><br/><br/><br/>　　飞信免费发短信API接口调用方式（通过HTTP访问以下网址、支持GET和POST）：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;"><a href="http://sms.api.bz/fetion.php?username=" target="_blank">http://sms.api.bz/fetion.php?username=</a>您的移动飞信登录手机号&password=您的移动飞信登录密码&sendto=接收短信的飞信好友手机号（也可以是你自己的手机号）&message=短信内容</div><br/>　　注：短信内容最大长度为180个汉字，超过180个汉字不发送。返回的信息为UTF-8编码的中文文本信息。<br/><br/><br/><br/>　　<span style="color: #FF0000;">2009年5月28日新增：</span>飞信免费发短信API接口调用方式（通过HTTPS加密隧道访问以下网址、支持GET和POST，进一步保证您的密码安全）：<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;"><a href="https://sms.api.bz/fetion.php?username=" target="_blank">https://sms.api.bz/fetion.php?username=</a>您的移动飞信登录手机号&password=您的移动飞信登录密码&sendto=接收短信的飞信好友手机号（也可以是你自己的手机号）&message=短信内容</div><br/>　　注：短信内容最大长度为180个汉字，超过180个汉字不发送。返回的信息为UTF-8编码的中文文本信息。<br/><br/>　　<a href="http://blog.s135.com/attachment.php?fid=14" target="_blank"><img src="http://blog.s135.com/attachment.php?fid=14" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/><hr/><br/>　　例1：在Linux命令行下通过curl命令给自己的手机号（假设为13800138000）发送短信（HTTP GET 方式）<br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">curl "http://sms.api.bz/fetion.php?username=13800138000&password=123456&sendto=13800138000&message=短信内容"</div><br/><br/>　　例2：在PHP5中通过file_get_contents函数发送短信（HTTP GET 方式）<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/%25E9%25A3%259E%25E4%25BF%25A1/" rel="tag">飞信</a> , <a href="http://blog.s135.com/tags/fetion/" rel="tag">fetion</a> , <a href="http://blog.s135.com/tags/api/" rel="tag">api</a> , <a href="http://blog.s135.com/tags/%25E5%2585%258D%25E8%25B4%25B9%25E7%259F%25AD%25E4%25BF%25A1/" rel="tag">免费短信</a> , <a href="http://blog.s135.com/tags/%25E5%2585%258D%25E8%25B4%25B9%25E5%258F%2591%25E7%259F%25AD%25E4%25BF%25A1/" rel="tag">免费发短信</a> , <a href="http://blog.s135.com/tags/%25E5%2585%258D%25E8%25B4%25B9%25E5%258F%2591%25E9%2580%2581%25E7%259F%25AD%25E4%25BF%25A1/" rel="tag">免费发送短信</a> , <a href="http://blog.s135.com/tags/%25E7%259F%25AD%25E4%25BF%25A1%25E7%25BD%2591%25E5%2585%25B3/" rel="tag">短信网关</a> , <a href="http://blog.s135.com/tags/%25E5%2585%258D%25E8%25B4%25B9%25E6%2589%258B%25E6%259C%25BA%25E7%259F%25AD%25E4%25BF%25A1/" rel="tag">免费手机短信</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/404/</link>
<title><![CDATA[柏彦大厦，再见。]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[生活琐事]]></category>
<pubDate>Thu, 12 Mar 2009 10:40:36 +0000</pubDate> 
<guid>http://blog.s135.com/post/404/</guid> 
<description>
<![CDATA[ 
	　　物品装箱。柏彦大厦，再见。<br/><br/>　　明天北京金山软件将开始搬家，下周将在上地的金山软件大厦办公。<br/><br/>　　2008年5月，<a href="http://tech.sina.com.cn/i/2008-05-12/12002189382.shtml" target="_blank">金山以1.75亿元的现金购新楼</a>，金山软件大厦地点在北京市海淀区小营西路33号（公交站名：上地桥东），大厦地上5层、地下2层，总面积约15907平方米。搬新家后，将拥有洗浴室、健身房、员工餐厅（一日三餐免费）、免费停车位等。<br/><br/>　　北京金山软件大厦：<br/>　　<a href="http://blog.s135.com/attachment/200903/kingsoft.jpg" target="_blank"><img src="http://blog.s135.com/attachment/200903/kingsoft.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/ajaxcdr/</link>
<title><![CDATA[AJAXCDR：利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[PHP/JS/Shell]]></category>
<pubDate>Mon, 09 Mar 2009 03:54:45 +0000</pubDate> 
<guid>http://blog.s135.com/ajaxcdr/</guid> 
<description>
<![CDATA[ 
	　　[文章+部分代码 作者：张宴 本文版本：v1.0 最后修改：2009.03.09 转载请注明原文链接：<a href="http://blog.s135.com/ajaxcdr/" target="_blank">http://blog.s135.com/ajaxcdr/</a>]<br/><br/>　　最近的一个项目中，需要通过 JavaScript 提交表单数据到另一个域名下的PHP接口（因为数据较大，需要HTTP POST方式提交），并获取PHP接口的返回值，在页面无刷新、无跳转的情况下，更新div标签内的内容。<br/><br/>　　浏览器出于安全考虑，是不允许JavaScript代码进行跨域操作。JavaScript 和 AJAX 跨域访问分为两大类，一是本域和子域的交互，二是本域和其他域的交互。<br/><br/>　　一、本域和子域的交互：<a href="http://www.s135.com" target="_blank">www.s135.com</a> 和 blog.s135.com<br/>　　二、本域和其他域的交互：blog.s135.com 和 api.bz<br/><br/>　　本域和子域的交互，可以通过iframe设置两个域名document.domain = "s135.com"，实现统一s135.com域下的跨域访问。<br/><br/>　　本域和其他域的交互，可以通过iframe、代理、JS创建动态脚本等几种方法来实现，<a href="http://www.phpchina.com/html/48/n-33848.html" target="_blank">这里有篇文章对几种方法作了简要的介绍</a>。<br/><br/>　　iframe、JS创建动态脚本这两种方法，需要开发者能控制两个域，两端都要编写相应的代码，非常麻烦。在本域服务器上用PHP写个代理中转程序，让本域PHP程序去读取远程其他域的数据再返回给自己，是常用的方法。但是，在本域“前端是CDN或Squid缓存服务器，后端才是PHP应用程序服务器”的系统架构下，穿透CDN或Squid去访问不能被缓存的PHP代理中转程序，效率是很低的。<br/><br/><hr/><br/>　　国外有人尝试用 Flash 做 JavaScript 和 AJAX 跨域访问中转，无疑是一个好方法。JavaScript 将数据提交给本域下的 Flash，通过 Flash 中转去访问其他域的接口，条件只需要其他域的根目录下有一个crossdomain.xml文件，文件中设置允许所有域名或允许本域访问即可。很多网站的API域名都提供了crossdomain.xml文件。<br/><br/>　　例如：<br/>　　1、新浪博客的crossdomain.xml文件（<a href="http://blog.sina.com.cn/crossdomain.xml" target="_blank">http://blog.sina.com.cn/crossdomain.xml</a>）设置了允许所有域名访问；<br/>　　2、饭否API的crossdomain.xml文件（<a href="http://api.fanfou.com/crossdomain.xml" target="_blank">http://api.fanfou.com/crossdomain.xml</a>）设置了允许所有域名访问；<br/>　　3、校内网API的crossdomain.xml文件（<a href="http://api.xiaonei.com/crossdomain.xml" target="_blank">http://api.xiaonei.com/crossdomain.xml</a>）设置了允许所有域名访问；<br/>　　4、优酷网的crossdomain.xml文件（<a href="http://www.youku.com/crossdomain.xml" target="_blank">http://www.youku.com/crossdomain.xml</a>）设置了允许所有域名访问；<br/>　　5、土豆网的crossdomain.xml文件（<a href="http://www.tudou.com/crossdomain.xml" target="_blank">http://www.tudou.com/crossdomain.xml</a>）设置了允许所有域名访问；<br/><br/>　　6、逍遥视频的crossdomain.xml文件（<a href="http://v.xoyo.com/crossdomain.xml" target="_blank">http://v.xoyo.com/crossdomain.xml</a>）设置了只允许*.xoyo.com域名访问；<br/>　　7、网易的crossdomain.xml文件（<a href="http://www.163.com/crossdomain.xml" target="_blank">http://www.163.com/crossdomain.xml</a>）设置了只允许tech.163.com、sports.163.com等几个域名访问。<br/><br/><hr/><br/>　　本人在“<a href="http://blog.monstuff.com/archives/000280.html" target="_blank">Cross-domain AJAX using Flash</a>”的基础上，增加了对表单进行智能处理的功能，封装了一个JavaScript包：<span style="color: #FF0000;">AJAXCDR</span>。通过 AJAXCDR，即可轻松地解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求，支持IE、Firefox、谷歌Chrome等多种浏览器。<br/><br/>　　AJAXCDR 拥有两个文件：ajaxcdr.js 和 ajaxcdr.swf，AJAXCDR 拥有一个 JavaScript 函数 AjaxCrossDomainRequest() 和一个全局变量 AjaxCrossDomainResponse。<br/><br/>　　<strong>一、AJAXCDR 下载：</strong><br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/ajaxcdr/" rel="tag">ajaxcdr</a> , <a href="http://blog.s135.com/tags/ajax/" rel="tag">ajax</a> , <a href="http://blog.s135.com/tags/javascript/" rel="tag">javascript</a> , <a href="http://blog.s135.com/tags/cross-domain/" rel="tag">cross-domain</a> , <a href="http://blog.s135.com/tags/cross/" rel="tag">cross</a> , <a href="http://blog.s135.com/tags/domain/" rel="tag">domain</a> , <a href="http://blog.s135.com/tags/flash/" rel="tag">flash</a> , <a href="http://blog.s135.com/tags/form/" rel="tag">form</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/401/</link>
<title><![CDATA[金山逍遥网招聘系统工程师和PHP开发工程师]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[生活琐事]]></category>
<pubDate>Fri, 06 Mar 2009 02:24:19 +0000</pubDate> 
<guid>http://blog.s135.com/post/401/</guid> 
<description>
<![CDATA[ 
	<script type="text/javascript" src="http://blog.s135.com/book/zhaopin/zp.php"></script>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/400/</link>
<title><![CDATA[Google Adsense西联汇款中国邮政储蓄提款详细步骤[原创]]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[生活琐事]]></category>
<pubDate>Sun, 01 Mar 2009 09:16:28 +0000</pubDate> 
<guid>http://blog.s135.com/post/400/</guid> 
<description>
<![CDATA[ 
	　　今天，去阜成门北的中国邮政储蓄，提取了Google通过西联汇款汇来的101.28美元Google AdSense广告费，兑换成人民币691.37元。Google AdSense西联快汇提款不收取手续费。<br/><br/>　　西联国际汇款公司（Western Union）是世界上领先的特快汇款公司，迄今已有150年的历史，它拥有全球最大最先进的电子汇兑金融网络，代理网点遍布全球近200个国家和地区。按照正常的付款计划，付款汇出后的第一天起，您即可在当地的西联汇款代理机构取款。<br/><br/>　　西联汇款在中国的代理机构是中国农业银行和中国邮政储蓄。如果您的Google Adsense的付款方式选择的是西联汇款，则可以在付款汇出后的第一天起，在任意一家中国农业银行或中国邮政储蓄（最好选择大一点的营业网点，有些支行或分理处不办理西联汇款业务，<a href="http://www.westernunion.cn/sc/location_search.php" target="_blank">点击这里可以查看西联汇款全国代理网点</a>。），领取美元或按照当时汇率兑换成人民币。<br/><br/><hr/><br/>　　提款步骤：<br/>　　1、点击Google AdSense管理界面中的“付款历史”→“2009-2-24 付款细节”，携带该页提示的材料。<br/>　　注意：提款不需要密码，汇款监控号(MTCN)非常重要，在提款之前不要泄漏。付款金额必须精确到小数点后的所有数字。必须携带身份证。抄下汇款人信息。<br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/google/" rel="tag">google</a> , <a href="http://blog.s135.com/tags/adsense/" rel="tag">adsense</a> , <a href="http://blog.s135.com/tags/%25E8%25A5%25BF%25E8%2581%2594%25E6%25B1%2587%25E6%25AC%25BE/" rel="tag">西联汇款</a>
]]>
</description>
</item><item>
<link>http://blog.s135.com/post/399/</link>
<title><![CDATA[网易的开源软件镜像站点]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[其他Unix技术]]></category>
<pubDate>Mon, 23 Feb 2009 15:54:25 +0000</pubDate> 
<guid>http://blog.s135.com/post/399/</guid> 
<description>
<![CDATA[ 
	　　网易开通了一个开源软件的镜像站点，网址为：<br/><br/>　　<a href="http://mirrors.163.com/" target="_blank">http://mirrors.163.com/</a><br/><br/>　　提供的镜像有：<br/><br/>　　1、Linux及BSD发行版镜像：FreeBSD、OpenBSD、RedHat、archlinux、centos、debian、fedora、gentoo、trixbox、ubuntu等。<br/><br/>　　2、开源软件镜像：eclipse可扩展开发平台、防火墙、openfiler网络存储管理工具。<br/><br/>　　该镜像目前只有一台杭州电信的服务器，网通用户访问可能会比较慢。<br/><br/><hr/><br/>　　如果您安装 CentOS 5.2 系统的服务器位于电信机房，您可以修改/etc/yum.repos.d/CentOS-Base.repo文件，将它的yum源更改成网易的镜像，代替国外的镜像，以便获取更快的下载速度。<br/><br/>　　您可以按照以下步骤从 <a href="http://blog.s135.com" target="_blank">blog.s135.com</a> 下载修改后的 CentOS-Base.repo 文件到您的服务器。<br/><br/><div style="border-left: 0px dashed #D6C094; margin: 5px; padding: 3px; margin-bottom:0px; border: 1px dashed #00a0c6; background-color: #ffffff;">cd /etc/yum.repos.d/<br/>mv CentOS-Base.repo CentOS-Base.repo.bak<br/>wget <a href="http://blog.s135.com/soft/linux/centos/5.2/CentOS-Base.repo" target="_blank">http://blog.s135.com/soft/linux/centos/5.2/CentOS-Base.repo</a></div><br/><hr/><br/>　　附：修改后的 CentOS-Base.repo 文件内容如下：<br/><br/>............<br/><br/>Tags - <a href="http://blog.s135.com/tags/linux/" rel="tag">linux</a> , <a href="http://blog.s135.com/tags/mirror/" rel="tag">mirror</a> , <a href="http://blog.s135.com/tags/%25E9%2595%259C%25E5%2583%258F/" rel="tag">镜像</a> , <a href="http://blog.s135.com/tags/%25E7%25BD%2591%25E6%2598%2593/" rel="tag">网易</a>
]]>
</description>
</item>
</channel>
</rss>