標籤:

遊戲伺服器 php框架選擇?

是這樣的,我現在手上有一份遊戲伺服器的代碼,是PHP的,用的框架是私人寫的,我看著代碼結構有點亂,想要用一個PHP的框架重構,要求就是並發高,要支持同時有20w+的在線,當時可以用負載均衡分散式部署,穩定,性能好,而且伺服器只有兩到三個人,不要太重度,資料庫是mysql,緩存是redis/memcached,支持分散式和集群。我只用過半年多的CI,其他框架並沒有接觸過。所以並不知道選擇哪個更好,求各位PHP大神推薦?


如果你的PHP服務跑在PHP-FPM或者Apache里,那你就用鳥哥的Yaf或原生PHP.

如果你的PHP服務跑在PHP-CLI下,那你就用峰哥的Swoole.

兩者可以結合起來使用,實現高性能PHP服務.

Yaf用來做傳統的PHP Web編程,比如遊戲官網,論壇,遊戲管理後台等等.

Swoole用來做高性能API服務或長連接服務,比如遊戲,即時通訊,彈幕等等.

遊戲本質也是一個即時通訊程序,拿棋牌遊戲來說:

遊戲的房間就相當於一個聊天的群.

玩家的操作就相當於向伺服器發送消息.

伺服器收到玩家消息後進行邏輯判斷.

比如伺服器判斷玩家A出的牌大過前一個玩家B出的牌,

那麼伺服器就向房間里的其他玩家推送消息,然後等待下一個玩家的操作.

可見棋牌遊戲是一個更加複雜的即時通訊程序,因為還包含了遊戲邏輯遊戲數據.

遊戲伺服器需要進行遊戲邏輯判斷,不同遊戲有不同邏輯,比如"鬥地主"和"爭上游"的規則就有所不同,牌型都有哪些,牌型誰大誰小.而且遊戲伺服器還需要維護遊戲數據,比如玩家手裡都有哪些牌,輪到誰出牌,伺服器同步狀態,避免玩家作弊.


我們現在就是用的PHP做服務端開發棋牌遊戲,是我基於swoole開發的框架,現在看來還算穩定


我覺得只要做了負載均衡,哪個框架都可以,無所謂。


用php做遊戲伺服器優點和缺點我都說一下吧。先說優點,php作為傳說中最好的語言還是有些道理的,上手真是容易,php加redis加mysql或者類似這樣的架構很容易搭建,開發效率也是杠杠的沒話說,但是兩個問題是比較難解決的,也就是缺點嘍,php無論是操作redis還是mysql怎麼說都是io操作,不說語言上開銷跟c++那種純內存操作的性能不在一個量級,這導致沒有經驗的開發者經常遇到測試環境遊戲好好的,上了線了卡成狗,針對遊戲這種強交互的能在性能上挺住的,都是php牛逼人才。另外一個就是php多進程機制的特點,操作全局數據加鎖的問題,不加鎖閉著眼修改數據吧總是感覺不像話,數據加鎖吧,無論是性能、一致性、正確性都要求極高,所以能解決這些問題的phper覺得的人才。

我開發遊戲伺服器多年,用過很多腳本,就是沒有php,因為c++嵌入php非常的難搞,如果用c++搞定底層,封裝資料庫io操作為非同步操作,那麼解決了php的第一個缺點,每個玩家的請求串列話,這樣也就解決了第二個缺點,後來做了個h2engine的伺服器引擎作為嘗試,c++做引擎,php做邏輯處理,可以給大家提供另外一個php做遊戲伺服器的思路

相關連接

  1. 文檔 http://h2cloud.org
  2. 源碼 https://github.com/fanchy/h2engine


推薦閱讀:

怎麼樣才算是精通 PHP?

TAG:PHP | PHP框架 |