狠狠撸
Submit Search
2011 PHP技术高峰论坛演讲 张宴
?
1 like
?
763 views
C
Cosey Lee
Follow
1 of 29
Download now
Download to read offline
More Related Content
2011 PHP技术高峰论坛演讲 张宴
1.
笔贬笔在金山游戏运营中的应用
张宴 30分钟 30分钟
2.
议
题 ?PHP在金山游戏官方网站(www.xoyo.com)中的应用: PHP在金山游戏官方网站(www.xoyo.com)中的应用: 在金山游戏官方网站(www.xoyo.com ①、PHP团队协作开发; ②、PHP系统架构应用。 ?PHP在金山游戏运营系统 Keyes 中的应用: PHP在金山游戏运营系统 ①、分层架构设计模型; ②、通用性API接口设计。 笔贬笔在金山游戏运营中的应用
3.
PHP在金山游戏官方网站(www.xoyo.com)中的应用 PHP在金山游戏官方网站(www.xoyo.com)中的应用
在金山游戏官方网站(www.xoyo.com 笔贬笔在金山游戏运营中的应用
4.
笔贬笔团队协作开发环境 ?团队协作,多人同时开发一个PHP项目时,开发环境、 测试环境,如何即满足每位程序员的快速调试需求, 又做到版本控制?
笔贬笔在金山游戏运营中的应用
5.
笔贬笔团队协作开发环境
笔贬笔在金山游戏运营中的应用
6.
笔贬笔团队协作开发环境
开发了协作开发环境 配置工具:XDevelop 笔贬笔在金山游戏运营中的应用
7.
笔贬笔团队协作开发环境 ?设置“C:WINDOWSsystem32driversetchosts ”为本机IP:
127.0.0.1 test.xoyo.com ?在自己的电脑上,修改完一个文件(例如: phpinfo.php),即可马上用浏览器运行、调试; ?本地调试没问题 后,再提交SVN; ?提交到SVN后,自 动同步到Linux测试 服务器,供后续测试。 笔贬笔在金山游戏运营中的应用
8.
笔贬笔团队协作开发环境 ?在Windows上编写的PHP代码文件,用Linux环境的 PHP(FastCGI)来调试,保证了开发环境、测试环境、 生成环境的统一; ?整个PHP开发环境、测试环境,即保证了程序员的快 速修改、调试代码需求,又保证了整个代码都在SVN版 本控制之中。
笔贬笔在金山游戏运营中的应用
9.
PHP代码的统一性保证 ?“开发环境→线下测试环境→线上测试环境→线上正 式环境”,连接的MySQL、Memcached、接口IP、端口各 不同,程序员一头雾水,经常改错配置文件或忘记修 改,如何解决? ?谁最了解各种服务器环境的配置?──系统工程师。 ?那么,为什么不分离?
笔贬笔在金山游戏运营中的应用
10.
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'], ), ); ?> 笔贬笔在金山游戏运营中的应用
11.
PHP代码的上线发布与回滚 ?将上线发布的版本号(例如:2.1.46),与SVN版本 号(例如:r21909)相对应,建立拥有Web界面的 《PHP代码发布系统》。 ?代码的发布上线,可由项目负责人(工程师)自行 完成,一般无需系统工程师的协助。
笔贬笔在金山游戏运营中的应用
12.
PHP代码发布系统 笔贬笔在金山游戏运营中的应用
13.
PHP代码发布系统 笔贬笔在金山游戏运营中的应用
14.
PHP与开源产物、C/C++程序的结合 ?方式一:利用PHP客户端扩展,通过TCP协议与C/C++开源程序进行通讯(例如,与 Sphinx搜索、分布式图片处理系统、TT、Memcached通讯);
笔贬笔在金山游戏运营中的应用
15.
PHP与开源产物、C/C++程序的结合 ?方式二:利用fsocketopen()、file_get_contents()、cURL等函数,通过HTTP协议 与C/C++开源程序进行通讯。(例如,与我们自行开发的开源简单消息队列软件: HTTPSQS【http://code.google.com/p/httpsqs】进行通讯。)
笔贬笔在金山游戏运营中的应用
16.
PHP Web程序中的异步处理 ?在PHP Web程序中,发送手机短信、电子邮件、转换 视频格式、记录日志、数据挖掘采集等,都是比较耗 时的操作。 ?为了增强用户体验,需要将这些操作转为异步执行。
笔贬笔在金山游戏运营中的应用
17.
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', ' 记录日志 '); ?> 笔贬笔在金山游戏运营中的应用
18.
PHP Web程序中的短耗时异步处理 ?fastcgi_finish_reques()
函数的缺点: ?PHP FastCGI 进程数有限,正在处理异步操作的php- cgi进程,无法处理新请求; ?如果并发访问量较大,php-cgi进程数用满,新访问 请求,将没有php-cgi去处理。Nginx服务器会出现: 502 Bad Gateway。 笔贬笔在金山游戏运营中的应用
19.
PHP Web程序中的长耗时异步处理 ?使用简单消息队列,来解决长耗时异步处理:
笔贬笔在金山游戏运营中的应用
20.
笔贬笔在负载均衡架构中的约束
笔贬笔在金山游戏运营中的应用
21.
PHP在Web服务器负载均衡架构中的约束 ?PHP Web程序,不在Web服务器上生成html静态文件、 PHP文件、缓存文件; ?数据对象的缓存,用APC、Memcached代替; ?HTML输出网页的缓存,用前端的Nginx负载均衡软 件,来实现; ?优点:①Web服务器上,PHP文件能够通过代码发布系 统统一管理,增、删Web服务器,非常快捷;清除缓 存,能够由系统工程师去统一管理。 ②不经过《代码发布系统》生成、修改的PHP文件, Web服务器自动禁止执行,做到防篡改、防挂马。
笔贬笔在金山游戏运营中的应用
22.
PHP在Web服务器负载均衡架构中的约束 ?如果需要记录Session会话,在负载均衡服务器上做 IP哈希,或在PHP Web服务器上做Session共享,必不 可少。
笔贬笔在金山游戏运营中的应用
23.
PHP在金山游戏运营系统 Keyes 中的应用 PHP在金山游戏运营系统
笔贬笔在金山游戏运营中的应用
24.
界面、接口、支撑,分层架构设计
PHP、C程序的交互 笔贬笔在金山游戏运营中的应用
25.
数据交互设计
⑥⑦两个步骤表示 KingEyes“管理界面”通过 AJAX轮询请求“功能接口” 获取返回信息。 ? 运营指令(修改经验倍数、踢人、发消息广播、启动游戏、停止游戏、更新游戏程序 、更新配置文件、并服) – 步骤:①②③④⑤⑥⑦ ? 服务器监控(CPU、磁盘、内存、进程数、系统负载、游戏服务端进程是否存在等) – 步骤:⑤⑥⑦ ? 游戏心跳检测(Ping包检测,确定游戏是否正常运行) – 步骤:③④⑤⑥⑦ ? 游戏在线人数(查看游戏总在线人数、各地图在线人数) – 步骤:③④⑤⑥⑦ 笔贬笔在金山游戏运营中的应用
26.
一套程序兼容不同游戏的服务端架构
甲: 甲:我从不坐大巴,我 要开自己的奥迪车过来 与游戏进程交互的初期接口设计方案 (不满意) 乙: 乙:奥拓车虽烂,我仍 然原意自己开车,而不 是坐大巴(不满意) 丙: 丙:我喜欢骑摩托车过 来(不满意) KE游戏运营平台 派大巴车来接啦! 丁: 丁:有大巴车接?太好 了。(满意) 笔贬笔在金山游戏运营中的应用
27.
一套程序兼容不同游戏的服务端架构
甲 与游戏进程交互的正式接口设计方案 (满意) 乙 (满意) KE游戏运营平台 接口犹如道路。 丙 (满意) 不限制交通工 具,但需要受交 通规则的约束。 丁 (满意)
28.
一套程序兼容不同游戏的服务端架构
?以游戏服务端程序的每一个进程为单位,进行通讯。 笔贬笔在金山游戏运营中的应用
Download