SlideShare a Scribd company logo
PHP在金山游戏运营中的应用




      张宴     30分钟
             30分钟
议    题
►PHP在金山游戏官方网站(www.xoyo.com)中的应用:
 PHP在金山游戏官方网站(www.xoyo.com)中的应用:
    在金山游戏官方网站(www.xoyo.com

 ①、PHP团队协作开发;
 ②、PHP系统架构应用。

►PHP在金山游戏运营系统 Keyes 中的应用:
 PHP在金山游戏运营系统

 ①、分层架构设计模型;
 ②、通用性API接口设计。




              PHP在金山游戏运营中的应用
PHP在金山游戏官方网站(www.xoyo.com)中的应用
PHP在金山游戏官方网站(www.xoyo.com)中的应用
   在金山游戏官方网站(www.xoyo.com




              PHP在金山游戏运营中的应用
PHP团队协作开发环境

►团队协作,多人同时开发一个PHP项目时,开发环境、
测试环境,如何即满足每位程序员的快速调试需求,
又做到版本控制?




         PHP在金山游戏运营中的应用
PHP团队协作开发环境




   PHP在金山游戏运营中的应用
PHP团队协作开发环境
          开发了协作开发环境
          配置工具:XDevelop




   PHP在金山游戏运营中的应用
PHP团队协作开发环境
►设置“C:WINDOWSsystem32driversetchosts ”为本机IP:
  127.0.0.1        test.xoyo.com
►在自己的电脑上,修改完一个文件(例如:
phpinfo.php),即可马上用浏览器运行、调试;

►本地调试没问题
后,再提交SVN;

►提交到SVN后,自
动同步到Linux测试
服务器,供后续测试。
                     PHP在金山游戏运营中的应用
PHP团队协作开发环境
►在Windows上编写的PHP代码文件,用Linux环境的
PHP(FastCGI)来调试,保证了开发环境、测试环境、
生成环境的统一;

►整个PHP开发环境、测试环境,即保证了程序员的快
速修改、调试代码需求,又保证了整个代码都在SVN版
本控制之中。




            PHP在金山游戏运营中的应用
PHP代码的统一性保证

►“开发环境→线下测试环境→线上测试环境→线上正
式环境”,连接的MySQL、Memcached、接口IP、端口各
不同,程序员一头雾水,经常改错配置文件或忘记修
改,如何解决?

►谁最了解各种服务器环境的配置?──系统工程师。

►那么,为什么不分离?



             PHP在金山游戏运营中的应用
PHP代码的统一性保证
►解决方案:自行开发“配置管理后台+PHP扩展”,通过实现一
个函数kae_config(),在不同的服务器环境,可以获取到不同
的配置信息,保证PHP配置文件不用因环境不同而修改。
<?php
$mysql_name_master = kae_config("name","mysql","master"); // 主库
$mysql_name_slave = kae_config("name","mysql","slave"); // 从库
$config['db'] = array('master' => array
    ( 'host' => mysql_name_master['host'].":".$mysql_name_master['port'],
       'username' => $mysql_name_master['user'],
       'password' => $mysql_name_master['pass'],
    ),
    'slave' => array
    (
       'host' => $mysql_name_slave['host'].":".$mysql_name_slave['port'],
       'username' => $mysql_name_slave['user'],
       'password' => $mysql_name_slave['pass'],
    ),
);
?>
                            PHP在金山游戏运营中的应用
PHP代码的上线发布与回滚

►将上线发布的版本号(例如:2.1.46),与SVN版本
号(例如:r21909)相对应,建立拥有Web界面的
《PHP代码发布系统》。

►代码的发布上线,可由项目负责人(工程师)自行
完成,一般无需系统工程师的协助。




           PHP在金山游戏运营中的应用
PHP代码发布系统




  PHP在金山游戏运营中的应用
PHP代码发布系统




  PHP在金山游戏运营中的应用
PHP与开源产品、C/C++程序的结合
►方式一:利用PHP客户端扩展,通过TCP协议与C/C++开源程序进行通讯(例如,与
Sphinx搜索、分布式图片处理系统、TT、Memcached通讯);




                 PHP在金山游戏运营中的应用
PHP与开源产品、C/C++程序的结合
►方式二:利用fsocketopen()、file_get_contents()、cURL等函数,通过HTTP协议
与C/C++开源程序进行通讯。(例如,与我们自行开发的开源简单消息队列软件:
HTTPSQS【http://code.google.com/p/httpsqs】进行通讯。)




                      PHP在金山游戏运营中的应用
PHP Web程序中的异步处理

►在PHP Web程序中,发送手机短信、电子邮件、转换
视频格式、记录日志、数据挖掘采集等,都是比较耗
时的操作。

►为了增强用户体验,需要将这些操作转为异步执行。




          PHP在金山游戏运营中的应用
PHP Web程序中的短耗时异步处理

►前提:使用Nginx+PHP(php-fpm FastCGI)架构。

►PHP-FPM 提供了fastcgi_finish_reques()
                                  函数。
 <?php
 echo '输出内容给用户 ';

 fastcgi_finish_request();
 /* 用户访问完成,不会等待下面的操作。 */

 sleep(5); //假设一个耗时的处理过程
 file_put_contents('/tmp/logs.txt', ' 记录日志 ');
 ?>



                            PHP在金山游戏运营中的应用
PHP Web程序中的短耗时异步处理

►fastcgi_finish_reques()
                       函数的缺点:

►PHP FastCGI 进程数有限,正在处理异步操作的php-
cgi进程,无法处理新请求;

►如果并发访问量较大,php-cgi进程数用满,新访问
请求,将没有php-cgi去处理。Nginx服务器会出现:
502 Bad Gateway。


              PHP在金山游戏运营中的应用
PHP Web程序中的长耗时异步处理
►使用简单消息队列,来解决长耗时异步处理:




         PHP在金山游戏运营中的应用
PHP在负载均衡架构中的约束




    PHP在金山游戏运营中的应用
PHP在Web服务器负载均衡架构中的约束
►PHP Web程序,不在Web服务器上生成html静态文件、
PHP文件、缓存文件;
►数据对象的缓存,用APC、Memcached代替;
►HTML输出网页的缓存,用前端的Nginx负载均衡软
件,来实现;
►优点:①Web服务器上,PHP文件能够通过代码发布系
统统一管理,增、删Web服务器,非常快捷;清除缓
存,能够由系统工程师去统一管理。
②不经过《代码发布系统》生成、修改的PHP文件,
Web服务器自动禁止执行,做到防篡改、防挂马。
           PHP在金山游戏运营中的应用
PHP在Web服务器负载均衡架构中的约束

►如果需要记录Session会话,在负载均衡服务器上做
IP哈希,或在PHP Web服务器上做Session共享,必不
可少。




            PHP在金山游戏运营中的应用
PHP在金山游戏运营系统 Keyes 中的应用
PHP在金山游戏运营系统




         PHP在金山游戏运营中的应用
界面、接口、支撑,分层架构设计




   PHP、C程序的交互



        PHP在金山游戏运营中的应用
数据交互设计

                             ⑥⑦两个步骤表示
                             KingEyes“管理界面”通过
                             AJAX轮询请求“功能接口”
                             获取返回信息。




• 运营指令(修改经验倍数、踢人、发消息广播、启动游戏、停止游戏、更新游戏程序
  、更新配置文件、并服)
   – 步骤:①②③④⑤⑥⑦
• 服务器监控(CPU、磁盘、内存、进程数、系统负载、游戏服务端进程是否存在等)
   – 步骤:⑤⑥⑦
• 游戏心跳检测(Ping包检测,确定游戏是否正常运行)
   – 步骤:③④⑤⑥⑦
• 游戏在线人数(查看游戏总在线人数、各地图在线人数)
   – 步骤:③④⑤⑥⑦


                PHP在金山游戏运营中的应用
一套程序兼容不同游戏的服务端架构
                      甲:
                      甲:我从不坐大巴,我
                      要开自己的奥迪车过来
与游戏进程交互的初期接口设计方案      (不满意)

                      乙:
                      乙:奥拓车虽烂,我仍
                      然原意自己开车,而不
                      是坐大巴(不满意)


                      丙:
                      丙:我喜欢骑摩托车过
                      来(不满意)
KE游戏运营平台   派大巴车来接啦!


                      丁:
                      丁:有大巴车接?太好
                      了。(满意)



            PHP在金山游戏运营中的应用
一套程序兼容不同游戏的服务端架构

                     甲
与游戏进程交互的正式接口设计方案     (满意)




                     乙
                     (满意)




KE游戏运营平台   接口犹如道路。   丙
                     (满意)
           不限制交通工
           具,但需要受交
           通规则的约束。
                     丁
                     (满意)
一套程序兼容不同游戏的服务端架构




   ►以游戏服务端程序的每一个进程为单位,进行通讯。

        PHP在金山游戏运营中的应用
2011 PHP技术高峰论坛演讲 张宴

More Related Content

PDF
[PHP 也有 Day #64] PHP 升級指南
PDF
Non-MVC Web Framework
PDF
Node.js 進攻桌面開發
PDF
App house
PDF
MakerBoard: MT7688 Emulator
PDF
以Code igniter為基礎的網頁前端程式設計
PDF
用最潮的 Java script 盡情開發 kde qt 程式
PDF
构建基于Lamp的网站架构
[PHP 也有 Day #64] PHP 升級指南
Non-MVC Web Framework
Node.js 進攻桌面開發
App house
MakerBoard: MT7688 Emulator
以Code igniter為基礎的網頁前端程式設計
用最潮的 Java script 盡情開發 kde qt 程式
构建基于Lamp的网站架构

Viewers also liked (16)

PPT
Презентация в МКТ: анкетирование, маршрут, парковка
PDF
Präsentation engl
PPT
Piranti proses (process device)
DOC
Lesson learning bisnis model dan standarisasi
PPT
0900 mac ozone met soc-2011
PPT
Doreen Nabaho Cchange&amp;Catsa9 Nov
PPT
Alyki template
PPT
Peranti masukan (input device)
PPT
Alyki Company Overview
PPT
Sejarah perkembangankomputer
PPTX
Codigo de trabajo
PPT
Piranti keluaran (output device)
PPT
Pengenalan komunikasi dan jaringan
PDF
Präsentation engl
PPTX
Harivansh rai bachchan
PPTX
Dadah 2011
Презентация в МКТ: анкетирование, маршрут, парковка
Präsentation engl
Piranti proses (process device)
Lesson learning bisnis model dan standarisasi
0900 mac ozone met soc-2011
Doreen Nabaho Cchange&amp;Catsa9 Nov
Alyki template
Peranti masukan (input device)
Alyki Company Overview
Sejarah perkembangankomputer
Codigo de trabajo
Piranti keluaran (output device)
Pengenalan komunikasi dan jaringan
Präsentation engl
Harivansh rai bachchan
Dadah 2011
Ad

2011 PHP技术高峰论坛演讲 张宴