PHP技術(shù)高峰論壇演講課件_第1頁
PHP技術(shù)高峰論壇演講課件_第2頁
PHP技術(shù)高峰論壇演講課件_第3頁
PHP技術(shù)高峰論壇演講課件_第4頁
PHP技術(shù)高峰論壇演講課件_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PHP在金山游戲運營中的應(yīng)用張宴30分鐘PHP在金山游戲運營中的應(yīng)用張宴30分鐘1議題PHP在金山游戲運營中的應(yīng)用議題PHP在金山游戲運營中的應(yīng)用2PHP在金山游戲運營中的應(yīng)用PHP在金山游戲運營中的應(yīng)用3PHP團隊協(xié)作開發(fā)環(huán)境?團隊協(xié)作,多人同時開發(fā)一個PHP項目時,開發(fā)環(huán)境、測試環(huán)境,如何即滿足每位程序員的快速調(diào)試需求,又做到版本控制?PHP在金山游戲運營中的應(yīng)用PHP團隊協(xié)作開發(fā)環(huán)境?團隊協(xié)作,多人同時開發(fā)一個PHP項目4PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用5PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用開發(fā)了協(xié)作開發(fā)環(huán)境配置工具:XDevelopPHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用開發(fā)了協(xié)作6PHP團隊協(xié)作開發(fā)環(huán)境?在自己的電腦上,修改完一個文件(例如:phpinfo.php),即可馬上用瀏覽器運行、調(diào)試;PHP在金山游戲運營中的應(yīng)用?設(shè)置“C:\WINDOWS\system32\drivers\etc\hosts”為本機IP:

?本地調(diào)試沒問題后,再提交SVN;?提交到SVN后,自動同步到Linux測試服務(wù)器,供后續(xù)測試。PHP團隊協(xié)作開發(fā)環(huán)境?在自己的電腦上,修改完一個文件(例如7PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用?在Windows上編寫的PHP代碼文件,用Linux環(huán)境的PHP(FastCGI)來調(diào)試,保證了開發(fā)環(huán)境、測試環(huán)境、生成環(huán)境的統(tǒng)一;?整個PHP開發(fā)環(huán)境、測試環(huán)境,即保證了程序員的快速修改、調(diào)試代碼需求,又保證了整個代碼都在SVN版本控制之中。PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用?在Win8PHP代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?“開發(fā)環(huán)境→線下測試環(huán)境→線上測試環(huán)境→線上正式環(huán)境”,連接的MySQL、Memcached、接口IP、端口各不同,程序員一頭霧水,經(jīng)常改錯配置文件或忘記修改,如何解決??誰最了解各種服務(wù)器環(huán)境的配置?──系統(tǒng)工程師。?那么,為什么不分離?PHP代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?“開發(fā)環(huán)9PHP代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?解決方案:自行開發(fā)“配置管理后臺+PHP擴展”,通過實現(xiàn)一個函數(shù)kae_config(),在不同的服務(wù)器環(huán)境,可以獲取到不同的配置信息,保證PHP配置文件不用因環(huán)境不同而修改。<?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代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?解決方案10PHP代碼的上線發(fā)布與回滾PHP在金山游戲運營中的應(yīng)用?將上線發(fā)布的版本號(例如:2.1.46),與SVN版本號(例如:r21909)相對應(yīng),建立擁有Web界面的《PHP代碼發(fā)布系統(tǒng)》。?代碼的發(fā)布上線,可由項目負責人(工程師)自行完成,一般無需系統(tǒng)工程師的協(xié)助。PHP代碼的上線發(fā)布與回滾PHP在金山游戲運營中的應(yīng)用?將上11PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用12PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用13PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中的應(yīng)用?方式一:利用PHP客戶端擴展,通過TCP協(xié)議與C/C++開源程序進行通訊(例如,與Sphinx搜索、分布式圖片處理系統(tǒng)、TT、Memcached通訊);PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中14PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中的應(yīng)用?方式二:利用fsocketopen()、file_get_contents()、cURL等函數(shù),通過HTTP協(xié)議與C/C++開源程序進行通訊。(例如,與我們自行開發(fā)的開源簡單消息隊列軟件:HTTPSQS【/p/httpsqs】進行通訊。)PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中15PHPWeb程序中的異步處理PHP在金山游戲運營中的應(yīng)用?在PHPWeb程序中,發(fā)送手機短信、電子郵件、轉(zhuǎn)換視頻格式、記錄日志、數(shù)據(jù)挖掘采集等,都是比較耗時的操作。?為了增強用戶體驗,需要將這些操作轉(zhuǎn)為異步執(zhí)行。PHPWeb程序中的異步處理PHP在金山游戲運營中的應(yīng)用?16PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的應(yīng)用?前提:使用Nginx+PHP(php-fpmFastCGI)架構(gòu)。?PHP-FPM提供了fastcgi_finish_reques()函數(shù)。<?phpecho'輸出內(nèi)容給用戶';fastcgi_finish_request();/*用戶訪問完成,不會等待下面的操作。*/sleep(5);//假設(shè)一個耗時的處理過程file_put_contents('/tmp/logs.txt','記錄日志');?>PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的17PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的應(yīng)用?fastcgi_finish_reques()函數(shù)的缺點:?PHPFastCGI進程數(shù)有限,正在處理異步操作的php-cgi進程,無法處理新請求;?如果并發(fā)訪問量較大,php-cgi進程數(shù)用滿,新訪問請求,將沒有php-cgi去處理。Nginx服務(wù)器會出現(xiàn):502BadGateway。PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的18PHPWeb程序中的長耗時異步處理PHP在金山游戲運營中的應(yīng)用?使用簡單消息隊列,來解決長耗時異步處理:PHPWeb程序中的長耗時異步處理PHP在金山游戲運營中的19PHP在負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用PHP在負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用20PHP在Web服務(wù)器負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用?數(shù)據(jù)對象的緩存,用APC、Memcached代替;?PHPWeb程序,不在Web服務(wù)器上生成html靜態(tài)文件、PHP文件、緩存文件;?HTML輸出網(wǎng)頁的緩存,用前端的Nginx負載均衡軟件,來實現(xiàn);?優(yōu)點:①Web服務(wù)器上,PHP文件能夠通過代碼發(fā)布系統(tǒng)統(tǒng)一管理,增、刪Web服務(wù)器,非常快捷;清除緩存,能夠由系統(tǒng)工程師去統(tǒng)一管理。②不經(jīng)過《代碼發(fā)布系統(tǒng)》生成、修改的PHP文件,Web服務(wù)器自動禁止執(zhí)行,做到防篡改、防掛馬。PHP在Web服務(wù)器負載均衡架構(gòu)中的約束PHP在金山游戲運營21PHP在Web服務(wù)器負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用?如果需要記錄Session會話,在負載均衡服務(wù)器上做IP哈希,或在PHPWeb服務(wù)器上做Session共享,必不可少。PHP在Web服務(wù)器負載均衡架構(gòu)中的約束PHP在金山游戲運營22PHP在金山游戲運營系統(tǒng)Keyes中的應(yīng)用PHP在金山游戲運營中的應(yīng)用PHP在金山游戲運營系統(tǒng)Keyes中的應(yīng)用PHP在金山游23界面、接口、支撐,分層架構(gòu)設(shè)計PHP在金山游戲運營中的應(yīng)用PHP、C程序的交互界面、接口、支撐,分層架構(gòu)設(shè)計PHP在金山游戲運營中的應(yīng)用P24PHP在金山游戲運營中的應(yīng)用數(shù)據(jù)交互設(shè)計運營指令(修改經(jīng)驗倍數(shù)、踢人、發(fā)消息廣播、啟動游戲、停止游戲、更新游戲程序、更新配置文件、并服)步驟:①②③④⑤⑥⑦服務(wù)器監(jiān)控(CPU、磁盤、內(nèi)存、進程數(shù)、系統(tǒng)負載、游戲服務(wù)端進程是否存在等)步驟:⑤⑥⑦游戲心跳檢測(Ping包檢測,確定游戲是否正常運行)步驟:③④⑤⑥⑦游戲在線人數(shù)(查看游戲總在線人數(shù)、各地圖在線人數(shù))步驟:③④⑤⑥⑦⑥⑦兩個步驟表示KingEyes“管理界面”通過AJAX輪詢請求“功能接口”獲取返回信息。PHP在金山游戲運營中的應(yīng)用數(shù)據(jù)交互設(shè)計運營指令(修改經(jīng)驗倍25一套程序兼容不同游戲的服務(wù)端架構(gòu)PHP在金山游戲運營中的應(yīng)用派大巴車來接啦!KE游戲運營平臺與游戲進程交互的初期接口設(shè)計方案一套程序兼容不同游戲的服務(wù)端架構(gòu)PHP在金山游戲運營中的應(yīng)用26一套程序兼容不同游戲的服務(wù)端架構(gòu)與游戲進程交互的正式接口設(shè)計方案KE游戲運營平臺丁丙乙甲接口猶如道路。不限制交通工具,但需要受交通規(guī)則的約束。(滿意)(滿意)(滿意)(滿意)一套程序兼容不同游戲的服務(wù)端架構(gòu)與游戲進程交互的正式接口設(shè)計27一套程序兼容不同游戲的服務(wù)端架構(gòu)PHP在金山游戲運營中的應(yīng)用?以游戲服務(wù)端程序的每一個進程為單位,進行通訊。一套程序兼容不同游戲的服務(wù)端架構(gòu)PHP在金山游戲運營中的應(yīng)用28PHP技術(shù)高峰論壇演講課件29演講完畢,謝謝觀看!演講完畢,謝謝觀看!30PHP在金山游戲運營中的應(yīng)用張宴30分鐘PHP在金山游戲運營中的應(yīng)用張宴30分鐘31議題PHP在金山游戲運營中的應(yīng)用議題PHP在金山游戲運營中的應(yīng)用32PHP在金山游戲運營中的應(yīng)用PHP在金山游戲運營中的應(yīng)用33PHP團隊協(xié)作開發(fā)環(huán)境?團隊協(xié)作,多人同時開發(fā)一個PHP項目時,開發(fā)環(huán)境、測試環(huán)境,如何即滿足每位程序員的快速調(diào)試需求,又做到版本控制?PHP在金山游戲運營中的應(yīng)用PHP團隊協(xié)作開發(fā)環(huán)境?團隊協(xié)作,多人同時開發(fā)一個PHP項目34PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用35PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用開發(fā)了協(xié)作開發(fā)環(huán)境配置工具:XDevelopPHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用開發(fā)了協(xié)作36PHP團隊協(xié)作開發(fā)環(huán)境?在自己的電腦上,修改完一個文件(例如:phpinfo.php),即可馬上用瀏覽器運行、調(diào)試;PHP在金山游戲運營中的應(yīng)用?設(shè)置“C:\WINDOWS\system32\drivers\etc\hosts”為本機IP:

?本地調(diào)試沒問題后,再提交SVN;?提交到SVN后,自動同步到Linux測試服務(wù)器,供后續(xù)測試。PHP團隊協(xié)作開發(fā)環(huán)境?在自己的電腦上,修改完一個文件(例如37PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用?在Windows上編寫的PHP代碼文件,用Linux環(huán)境的PHP(FastCGI)來調(diào)試,保證了開發(fā)環(huán)境、測試環(huán)境、生成環(huán)境的統(tǒng)一;?整個PHP開發(fā)環(huán)境、測試環(huán)境,即保證了程序員的快速修改、調(diào)試代碼需求,又保證了整個代碼都在SVN版本控制之中。PHP團隊協(xié)作開發(fā)環(huán)境PHP在金山游戲運營中的應(yīng)用?在Win38PHP代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?“開發(fā)環(huán)境→線下測試環(huán)境→線上測試環(huán)境→線上正式環(huán)境”,連接的MySQL、Memcached、接口IP、端口各不同,程序員一頭霧水,經(jīng)常改錯配置文件或忘記修改,如何解決??誰最了解各種服務(wù)器環(huán)境的配置?──系統(tǒng)工程師。?那么,為什么不分離?PHP代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?“開發(fā)環(huán)39PHP代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?解決方案:自行開發(fā)“配置管理后臺+PHP擴展”,通過實現(xiàn)一個函數(shù)kae_config(),在不同的服務(wù)器環(huán)境,可以獲取到不同的配置信息,保證PHP配置文件不用因環(huán)境不同而修改。<?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代碼的統(tǒng)一性保證PHP在金山游戲運營中的應(yīng)用?解決方案40PHP代碼的上線發(fā)布與回滾PHP在金山游戲運營中的應(yīng)用?將上線發(fā)布的版本號(例如:2.1.46),與SVN版本號(例如:r21909)相對應(yīng),建立擁有Web界面的《PHP代碼發(fā)布系統(tǒng)》。?代碼的發(fā)布上線,可由項目負責人(工程師)自行完成,一般無需系統(tǒng)工程師的協(xié)助。PHP代碼的上線發(fā)布與回滾PHP在金山游戲運營中的應(yīng)用?將上41PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用42PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用PHP代碼發(fā)布系統(tǒng)PHP在金山游戲運營中的應(yīng)用43PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中的應(yīng)用?方式一:利用PHP客戶端擴展,通過TCP協(xié)議與C/C++開源程序進行通訊(例如,與Sphinx搜索、分布式圖片處理系統(tǒng)、TT、Memcached通訊);PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中44PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中的應(yīng)用?方式二:利用fsocketopen()、file_get_contents()、cURL等函數(shù),通過HTTP協(xié)議與C/C++開源程序進行通訊。(例如,與我們自行開發(fā)的開源簡單消息隊列軟件:HTTPSQS【/p/httpsqs】進行通訊。)PHP與開源產(chǎn)品、C/C++程序的結(jié)合PHP在金山游戲運營中45PHPWeb程序中的異步處理PHP在金山游戲運營中的應(yīng)用?在PHPWeb程序中,發(fā)送手機短信、電子郵件、轉(zhuǎn)換視頻格式、記錄日志、數(shù)據(jù)挖掘采集等,都是比較耗時的操作。?為了增強用戶體驗,需要將這些操作轉(zhuǎn)為異步執(zhí)行。PHPWeb程序中的異步處理PHP在金山游戲運營中的應(yīng)用?46PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的應(yīng)用?前提:使用Nginx+PHP(php-fpmFastCGI)架構(gòu)。?PHP-FPM提供了fastcgi_finish_reques()函數(shù)。<?phpecho'輸出內(nèi)容給用戶';fastcgi_finish_request();/*用戶訪問完成,不會等待下面的操作。*/sleep(5);//假設(shè)一個耗時的處理過程file_put_contents('/tmp/logs.txt','記錄日志');?>PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的47PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的應(yīng)用?fastcgi_finish_reques()函數(shù)的缺點:?PHPFastCGI進程數(shù)有限,正在處理異步操作的php-cgi進程,無法處理新請求;?如果并發(fā)訪問量較大,php-cgi進程數(shù)用滿,新訪問請求,將沒有php-cgi去處理。Nginx服務(wù)器會出現(xiàn):502BadGateway。PHPWeb程序中的短耗時異步處理PHP在金山游戲運營中的48PHPWeb程序中的長耗時異步處理PHP在金山游戲運營中的應(yīng)用?使用簡單消息隊列,來解決長耗時異步處理:PHPWeb程序中的長耗時異步處理PHP在金山游戲運營中的49PHP在負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用PHP在負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用50PHP在Web服務(wù)器負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用?數(shù)據(jù)對象的緩存,用APC、Memcached代替;?PHPWeb程序,不在Web服務(wù)器上生成html靜態(tài)文件、PHP文件、緩存文件;?HTML輸出網(wǎng)頁的緩存,用前端的Nginx負載均衡軟件,來實現(xiàn);?優(yōu)點:①Web服務(wù)器上,PHP文件能夠通過代碼發(fā)布系統(tǒng)統(tǒng)一管理,增、刪Web服務(wù)器,非??旖?;清除緩存,能夠由系統(tǒng)工程師去統(tǒng)一管理。②不經(jīng)過《代碼發(fā)布系統(tǒng)》生成、修改的PHP文件,Web服務(wù)器自動禁止執(zhí)行,做到防篡改、防掛馬。PHP在Web服務(wù)器負載均衡架構(gòu)中的約束PHP在金山游戲運營51PHP在Web服務(wù)器負載均衡架構(gòu)中的約束PHP在金山游戲運營中的應(yīng)用?

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論