<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[张宴的博客]]></title> 
<link>http://zyan.cc/index.php</link> 
<description><![CDATA[Web系统架构与底层研发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[张宴的博客]]></copyright>
<item>
<link>http://zyan.cc/2011phptc/</link>
<title><![CDATA[2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>张宴 &lt;net@s135.com&gt;</author>
<category><![CDATA[PHP/JS/Shell]]></category>
<pubDate>Sun, 08 May 2011 11:40:41 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/</guid> 
<description>
<![CDATA[ 
	　　5月7日，我在北京长城饭店“<a href="http://www.phpchina.com/2011phptc/" target="_blank">2011中国PHP技术高峰论坛</a>”上的演讲PPT：<br/><br/>　　下载地址1（国外服务器）：<a href="http://blog.zyan.cc/attachment/201105/2011phptc_zy.zip" target="_blank">http://blog.zyan.cc/attachment/201105/2011phptc_zy.zip</a><br/><br/>　　下载地址2（国内服务器）：<a href="http://ishare.iask.sina.com.cn/f/15231659.html" target="_blank">http://ishare.iask.sina.com.cn/f/15231659.html</a><br/><br/><hr/><br/>　　<a href="http://zyan.cc/attachment/201105/2011phptc_zy.jpg" target="_blank"><img src="http://zyan.cc/attachment/201105/2011phptc_zy.jpg" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/><br/>　　以下是我在会议主办方对演讲文字速录的基础上，修正错漏内容，整理之后，对应到每页PPT的文字内容：<br/><br/>　　[PPT No.1]<br/>　　大家下午好，现在我来跟大家分享的是PHP在金山游戏运营中的应用，包括团队协助开发实现方式、网站Web架构设计、游戏运营平台设计这些信息。<br/><br/>　　[PPT No.2]<br/>　　我议题主要有两个，一个是<a href="http://www.xoyo.com" target="_blank">金山游戏官方网站</a>的一些应用，另一个是金山游戏运营系统Keyes中的架构设计。<br/><br/>　　[PPT No.3]<br/>　　金山游戏官方网站包括<a href="http://my.xoyo.com" target="_blank">用户中心</a>、<a href="http://kefu.xoyo.com" target="_blank">客服系统</a>、<a href="http://bbs.xoyo.com" target="_blank">论坛</a>、<a href="http://v.xoyo.com" target="_blank">视频</a>、各游戏<a href="http://jx3.xoyo.com" target="_blank">官网</a>，以及其他跟游戏相关的一些产品，主要采用64位CentOS Linux系统、Nginx、PHP 5.2版本、MySQL 5.5。<br/><br/>　　[PPT No.4]<br/>　　首先来看团队协作开发。我们肯定遇到过这样一种情况，在很多项目中，都是多个人同时开发，涉及到开发环境和测试环境不一样。我们很多PHP工程师，都是在Windows上开发代码，虽然Windows上也可以配置Nginx+PHP+MySQL环境，但是，由于测试环境、生产环境都是Linux系统，而且一些功能只能在Linux下运行，还有一些PHP扩展（例如：分布式图片处理、金山通行证加密扩展），也只能运行在Linux环境中。当我们在Windows上修改完几行PHP代码，想马上看一下执行结果，如果利用FTP之类的工具传到Linux测试服务器上再测试，就太慢了。如果同一台Linux测试服务器上，有多少人同时开发，你上传上去PHP文件，可能会覆盖别人上传的同名文件，就没有办法做到版本控制。<br/><br/>　　[PPT No.5]<br/>　　我们从图中可以看到，假如是程序员A和B都在Windows上开发代码，由于Nginx与PHP之间采用的是TCP FastCGI协议通讯，因此，两者可以分离到不同的服务器上。我们可以把Nginx安装在程序员各自的Windows PC机上，用本机的Nginx处理HTTP请求，用Linux测试服务器上的php-cgi程序，处理PHP请求。程序员在Windows上开发程序，保存之后，不用做任何上传操作，即可用Linux上的php-cgi调试程序。从图中这个流程可以看到，首先，两个程序员分别从SVN版本库，获取到一个项目的最新版本，各自进行一些修改。两人修改程序时，采用的是同一台Linux测试服务器的php-cgi，对各自PC机上的PHP程序进行调试。在PC机上本地测试没有问题，可以提交到SVN版本库。我们做了一个自动同步程序，利用SVN钩子，在每次发生svn commit提交时，在对应的测试服务器的对应项目路径内，执行svn update，将最新修改到文件同步到测试服务器。后来发现有一些问题，如果我们一个项目的目录、程序文件特别多的话，svn update需要遍历扫描目录列表，非常慢。因为我们的SVN是和Apache结合起来使用的，Apache可以记录日志，于是，我们进行了改进，将SVN提交日志记录到Linux下的命名管道内，再用一个程序从命名管道内读取日志，只svn update每次修改的几个文件，这样，速度就非常快了。设置hosts为Linux测试服务器的IP，就可以测试多位程序员代码合并后的效果了。<br/><br/>............<br/><br/>Tags - <a href="http://zyan.cc/tags/php/" rel="tag">php</a>
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8301</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>code798 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 08 May 2011 12:01:48 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8301</guid> 
<description>
<![CDATA[ 
	下载下来看看,支持张老师
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8302</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>一米阳光 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 08 May 2011 12:02:56 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8302</guid> 
<description>
<![CDATA[ 
	宴哥，一直觉得你的成长步伐蛮快的。现在已跻身架构师行列了。不错，恭喜。&nbsp;&nbsp; 本人现也来到了新浪学习，有机会也多向你学习。
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8303</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>懒人 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 08 May 2011 12:07:05 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8303</guid> 
<description>
<![CDATA[ 
	很好,收藏了...从这里学习nginx,非常给力!本文也是技术文章,希望能给出更多实例我们学习学习!
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8304</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>Sam &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 08 May 2011 12:09:57 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8304</guid> 
<description>
<![CDATA[ 
	太棒了，我转给同事们一起学习了：）
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8305</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>wang &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 08 May 2011 14:37:18 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8305</guid> 
<description>
<![CDATA[ 
	果断的下下来学习。谢谢分享。
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8306</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>哎呦了个喂 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 08 May 2011 14:41:32 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8306</guid> 
<description>
<![CDATA[ 
	盯了一天了，终于等到了，大会没去成，在家补补课
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8307</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>思无邪 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 08 May 2011 15:15:28 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8307</guid> 
<description>
<![CDATA[ 
	其实可以用svn export，这样就避免了update，SVN的单进程使得密集形提交会造成update时的冲突，这样的话就只能手动解决了，<br/>我写了个现成的脚本，配置后即可使用，并可以自动提取出来CSS/JS的版本号<br/><a href="http://blog.ddidd.com/read.php?67" target="_blank">http://blog.ddidd.com/read.php?67</a>
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8308</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>chutianyin &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 03:35:21 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8308</guid> 
<description>
<![CDATA[ 
	这个 代码发布系统 有点兴趣<br/>是怎么样的一个工作流程？
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8310</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>Roderic &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 04:29:16 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8310</guid> 
<description>
<![CDATA[ 
	尝试了在windows上配置nginx，将php文件传给linux服务器上的php-fpm生成的php进程解释，但是浏览器里访问相应的php文件，都是返回404，不知道在windows上配置和linux上有何区别
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8311</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>niniwzw &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 05:05:52 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8311</guid> 
<description>
<![CDATA[ 
	我顶你，金山你还算是有真才实学的。
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8312</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>Roderic &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 06:15:41 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8312</guid> 
<description>
<![CDATA[ 
	php-fpm部分的配置我之前也修改过，如果没有做修改的话，返回的应该是502 bad gateway。<br/><br/>我在linux上测试了下，如果2台linux服务器上访问的是相同物理路径（即document root是一样的）下的同名php文件，那么将一台机器上的的fastcgi_pass指向到另一台机器的php-fpm所监听的端口，没有问题。如果删除fastcgi_pass参数配置的服务器上的该php文件，访问另一服务器上的该php文件就会报404，因为传递过去的SCRIPT_FILENAME不存在。<br/><br/>我之前在windows上碰到的就是404的问题，fastcgi.conf里的fastcgi_parm SCRIPT_FILENAME $document_root$fastcgi_script_name，如果不修改的话$document_root，那么传递到linux服务器端的就是windows上的物理路径，这个就会造成在linux端找不到相应目录下的物理文件，而导致404错误。
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8313</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>Roderic &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 06:30:42 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8313</guid> 
<description>
<![CDATA[ 
	从我现在的情况来看，php-cgi还是解释的服务器端的文件，并不是程序员本机上的文件，本地nginx的作用就是传递了一个参数SCRIPT_FILENAME过去。<br/>不知道您所说的“两人修改程序时，采用的是同一台Linux测试服务器的php-cgi，对各自PC机上的PHP程序进行调试“是如何实现的。
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8314</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>怪物宝 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 06:41:16 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8314</guid> 
<description>
<![CDATA[ 
	原来php是这样用啊
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8315</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>Tim &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 06:51:11 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8315</guid> 
<description>
<![CDATA[ 
	对&quot;php-cgi中增加一个程序执行预判断机制&quot;比较感兴趣，可以介绍一下吗？
]]>
</description>
</item><item>
<link>http://zyan.cc/2011phptc/#blogcomment8316</link>
<title><![CDATA[[评论] 2011中国PHP技术高峰论坛：PHP在金山游戏运营中的应用]]></title> 
<author>Roderic &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Mon, 09 May 2011 07:25:14 +0000</pubDate> 
<guid>http://zyan.cc/2011phptc/#blogcomment8316</guid> 
<description>
<![CDATA[ 
	非常感谢，经过您解释，已经非常清楚了！
]]>
</description>
</item>
</channel>
</rss>