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

PHP在金山游戏官方网站中的应用:

   ①、PHP团队协作开发;

   ②、PHP系统架构应用。

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

   ①、分层架构设计模型;

   ②、通用性API接口设计

PHP在金山游戏官方网站中的应用

PHP团队协作开发环境

PHP团队协作开发环境

设置“C:\WINDOWS\system32\drivers\etc\hosts”为本机IP:

    127.0.0.1   https://blog.csdn.net/weixin_43392489

在自己的电脑上,修改完一个文件(例如:phpinfo.php),即可马上用浏览器运行、调试;

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

提交到SVN后,自动同步到Linux测试服务器,供后续测试

在Windows上编写的PHP代码文件,用Linux环境的PHP(FastCGI)来调试,保证了开发环境、测试环境、生成环境的统一;

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

PHP代码的统一性保证

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

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

那么,为什么不分离?

解决方案:自行开发“配置管理后台+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代码的上线发布与回滚

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

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

PHP代码发布系统

PHP与开源产品、C/C++程序的结合

方式二:利用fsocketopen()、file_get_contents()、cURL等函数,通过HTTP协议与C/C++开源程序进行通讯。(例如,与我们自行开发的开源简单消息队列软件:HTTPSQS进行通讯。)

PHP Web程序中的异步处理

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

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

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 Web程序中的短耗时异步处理

fastcgi_finish_reques()函数的缺点:

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

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

502 Bad Gateway。

PHP Web程序中的长耗时异步处理

使用简单消息队列,来解决长耗时异步处理:

PHP在负载均衡架构中的约束

PHP在Web服务器负载均衡架构中的约束

PHP Web程序,不在Web服务器上生成html静态文件、PHP文件、缓存文件;

数据对象的缓存,用APC、Memcached代替;

HTML输出网页的缓存,用前端的Nginx负载均衡软件,来实现;

►优点:①Web服务器上,PHP文件能够通过代码发布系统统一管理,增、删Web服务器,非常快捷;清除缓存,能够由系统工程师去统一管理。

不经过《代码发布系统》生成、修改的PHP文件,Web服务器自动禁止执行,做到防篡改、防挂马

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

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

界面、接口、支撑,分层架构设计

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

运营指令(修改经验倍数、踢人、发消息广播、启动游戏、停止游戏、更新游戏程序、更新配置文件、并服)

步骤:①②③④⑤⑥⑦

服务器监控(CPU、磁盘、内存、进程数、系统负载、游戏服务端进程是否存在等)

步骤:⑤⑥⑦

游戏心跳检测(Ping包检测,确定游戏是否正常运行)

步骤:③④⑤⑥⑦

游戏在线人数(查看游戏总在线人数、各地图在线人数)

步骤:③④⑤⑥⑦

一套程序兼容不同游戏的服务端架构

与游戏进程交互的初期接口设计方案

甲:我从不坐大巴,我要开自己的奥迪车过来(不满意)

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

丙:我喜欢骑摩托车过来(不满意)

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

(不满意)

与游戏进程交互的正式接口设计方案

(满意)

(满意)

(满意)

(满意)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Leedcode][JAVA][第236题][二叉树的公共祖先][后序遍历][BFS]

【问题描述】 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可…

html鼠标离开点击停留,Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)...

本文实例总结了Javascript DOM事件操作。分享给大家供大家参考&#xff0c;具体如下&#xff1a;使用JavaScript可以对HTML页面上的各种事件进行监听&#xff0c;如鼠标点击/释放&#xff0c;鼠标悬停/离开&#xff0c;等等。效果图&#xff1a;代码&#xff1a;/p>"ht…

天猫系统的流控降级

目录 1交易应用介绍 2系统挑战及应对 3优雅降级思路 4心得总结 交易应用介绍 购物袋 下单 确认订单 系统挑战及应对 挑战 • 高并发 • 低时延 • 容量有限 • 多外部系统协力&下单信息准确 目标 • 不挂掉 – 不因为容量原因导致网站瘫痪 – 自身的容量 – 后…

[剑指offer]面试题第[68-1]题[Leedcode][JAVA][第235题][二叉搜索树的最近公共祖先][递归][BFS]

【问题描述】[第235题][二叉搜索树的最近公共祖先][简单] 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖…

天猫服务系统的架构和经验

主要内容 业务介绍 分析设计过程 过程推演 事件/流程架构及使用场景讨论 基础组件介绍 改进点 业务介绍 业务介绍-业务关键点 产品定位 买家&#xff1a;提供标准的、优质的服务体验卖家&#xff1a;整合各环节资源&#xff0c;提供便捷的产品&#xff1b;提升服务质量、降低…

[Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]

【问题描述】[第50题][Pow(x, n)][中等] 实现 pow(x, n) &#xff0c;即计算 x 的 n 次幂函数。输入: 2.10000, 3 输出: 9.26100 示例 3:输入: 2.00000, -2 输出: 0.25000 解释: 2-2 1/22 1/4 0.25【解答思路】 1.快速幂 时间复杂度&#xff1a;O(logN) 空间复杂度&#x…

淘宝网商品管理?技术 ?

目录 技术挑战 商品管理 系统的演化过程 技术细节 展望 技术挑战淘宝商品管理 十亿级商品数百万级用户数每天处理TB级数据数据沉淀成本控制业务多变上千条业务规则 发展过程淘宝商品管理 第一阶段&#xff1a;基于搜索 基于搜索的商品管理 〙实现 存储用户设置的规则&…

考计算机网络证书转深户,惊?这个证书能帮你直接入深户,还没有学历要求? 你还在等什么...

原标题&#xff1a;惊&#xff1f;这个证书能帮你直接入深户&#xff0c;还没有学历要求&#xff1f; 你还在等什么只要持有中级职称&#xff0c;40周岁以内申请入户时&#xff0c;有连续半年以上社保&#xff0c;就可以直接入户了&#xff0c;没有学历的要求&#xff01;而之前…

[Leedcode][JAVA][第155题][最小栈][基本类型包装类]

【问题描述】 【解答思路】 1. 两个栈实现 1.1、辅助栈和数据栈同步 特点&#xff1a;编码简单&#xff0c;不用考虑一些边界情况&#xff0c;就有一点不好&#xff1a;辅助栈可能会存一些“不必要”的元素。 1.2、辅助栈和数据栈不同步 特点&#xff1a;由“辅助栈和数据…

淘宝主站Cgroup资源控制

目录 项目背景&#xff1a;主站的现状 选型的过程 Cgroup/LinuxContainer介绍 定制和开发 存在的问题和对策 项目背景 主站&#xff1a; 跑在xen虚拟机上的Java应用 处理业务逻辑&#xff0c;本地无重要存储&#xff0c;无状态。 一台物理机部署3台虚拟机 双路Xeon&#…

[Leedcode][JAVA][第102题][二叉树的层序遍历][递归][迭代][BFS]

【问题描述】[第102题][二叉树的层序遍历][中等] 给你一个二叉树&#xff0c;请你返回其按 层序遍历 得到的节点值。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。示例&#xff1a; 二叉树&#xff1a;[3,9,20,null,null,15,7],3/ \9 20/ \15 7 返…

java学习(178):终篇?静态代理?动态代理?

总体设计 包com.xzit.aop DynlnvokeProducerProxy 包com.xzit.db db 包com.xzit.entity ClientDepartmentEmployeeGoodsProducer 包com.xzit.interfaces DepartmentDaoImpEmployeeDaoImpIGoodsIObject 包com.xzit.proxy TeatDynProxyTestStaticProxy 咱直接上代码&#xff0c;…

[Leedcode][JAVA][第94/144/145题][前中后序遍历][递归][迭代][二叉树]

【问题描述】[] 前序遍历 先输出当前结点的数据&#xff0c;再依次遍历输出左结点和右结点 中序遍历 先遍历输出左结点&#xff0c;再输出当前结点的数据&#xff0c;再遍历输出右结点 后续遍历 先遍历输出左结点&#xff0c;再遍历输出右结点&#xff0c;最后输出当前结点的数…

sqlserver:(2):window下SQL server数据库数据源的配置

1首先打开控制面板 2选择64位数据源 3添加 4选择sql server 做好配置&#xff0c;下一步 下一步 下一步 测试

聚类算法:K-Means

1.K-Means定义&#xff1a; K-Means是一种无监督的基于距离的聚类算法&#xff0c;简单来说&#xff0c;就是将无标签的样本划分为k个簇&#xff08;or类&#xff09;。它以样本间的距离作为相似性的度量指标&#xff0c;常用的距离有曼哈顿距离、欧几里得距离和闵可夫斯基距离…

html:(1) 登录界面

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><!-- content属性值 :width:可视区域的宽度&#xff0c;值可为数字或关键词device-widthheight:同widthintial-scale:页面首次被显示是可视区域的缩放级别&#x…

[Leedcode][JAVA][第5题][最长回文子串][数组][动态规划]

【问题描述】[第5题][最长回文子串][中等] 给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1&#xff1a;输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。【解答思路】 1. 中心扩展法…

一流大学计算机专业,计算机专业一流大学太难考,不妨退而求其次,看看这5所大学...

原标题&#xff1a;计算机专业一流大学太难考&#xff0c;不妨退而求其次&#xff0c;看看这5所大学因为就业率高、薪酬待遇好&#xff0c;又是前沿科技&#xff0c;所以计算机专业近一二十年来一直都很热门&#xff0c;开设计算机专业的院校也如雨后春笋一般冒了出来&#xff…

[Leedcode][JAVA][第560题][和为K的子数组][Hashmap][数组]

【问题描述】[第560题][和为K的子数组][中等] 给定一个整数数组和一个整数 k&#xff0c;你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums [1,1,1], k 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 :数组的长度为 [1, 20,000]。 数组中元素的范围…

html表格复制最后一行字,为什么Word中的表格输入文字最后一行文字会自动跳到下一页...

为什么Word中的表格输入文字最后一行文字会自动跳到下一页以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;为什么Word中的表格输入文字最后一行文字会自动跳到下一页, 在WPS文字中的表格中打…