2009-11-03 52 views
2

我正在開發使用Zend框架開發的Facebook遊戲。現在我沒有很多流量,並且已經看到相當多的數據使用/ CPU時間。框架比較和開銷

其實我不擅長Zend。我擅長從頭開始編寫PHP & JS。

所以,我很好奇Zend框架的性能。因爲我正考慮使用Zend作爲後端來重建應用程序來管理數據/會話/邏輯。並使用JS(本地代碼或JQuery)作爲前端渲染UI並處理客戶端的用戶操作。

在兩者之間,使用aJax從Zend後端獲取數據。最有可能的是REST。
任何人都有關於這種結構的建議?我想減少服務器的負載,也更容易管理代碼,再加上更好的用戶體驗。

欣賞是否有人有好主意。 :)

(POST幾天後)

因此,基線PHP應該是更快,使用更少的數據傳輸(如果碼正確),那麼Zend的(或任何)框架,對不對?代碼可重用性在這裏不是一個大問題。 :)

+0

是不是這個編程相關,因此屬於StackOverflow? – 2009-11-03 20:28:51

+0

即時通訊困惑,什麼去stackoverflow,什麼去超級用戶現在...我張貼somethign在堆棧,並重定向到超級用戶..哦... – Murvinlai 2009-11-03 20:34:02

+0

簡而言之,StackOverflow是有關*創建*軟件,超級用戶是關於*使用*軟件的問題。 – 2009-11-03 20:36:21

回答

1

只有一件事要做如果你認爲基於ZF的應用程序很慢。衡量它。存在各種工具,它們將採用Xdebug的性能分析輸出來向您顯示哪些部件正在減慢過程,然後您可以採取一些措施優化這些部件(例如輕量級初始化和/或某種緩存)。一個很好的資源是Zend框架書survivethedeepend.com,「performance optimisation for ZF Apps」。

1

在我看來,框架的基準是無用的。他們說了一些關於抽象情況的內容,但表現非常具有情境性。您應該測量您的應用程序並優化它。是的,如果您使用Zend Framework中的大量組件,那麼您的應用程序可能會走多遠,但是在您需要放棄PHP並將其寫入C之前,您的應用程序的運行速度也有限制。有可能讓Zend Framework在高負載的網站上執行得很好,但是你必須付出努力。就像你必須如果你不要使用它。

3

許多PHP開發人員受害的一件事是犧牲良好的體系結構和良好的原則,他們認爲性能。

你可能會決定在你的代碼中偷工減料,但請記住,「不成熟的優化是所有邪惡的根源」。所以,如果您需要儘早優化,請確保您確實在做一些有用的事情。

Zend庫的設計考慮到了最佳實踐,不一定是性能。理由是有很多方法可以在不犧牲代碼維護和可讀性(緩存,負載平衡,硬件,隊列管理等)的情況下加快速度。

這就是說,我不認爲你正在尋找的是關於ZF性能的統計數據,而是關於如何使用它來設置你的應用程序的建議。具體來說,我建議你爲ajax請求創建一個專用的,非常輕的引導程序。在ajax中,你通常只需要一些最小的先決條件,然後放入控制器。對於非Ajax請求,使用推薦的體系結構(引導程序,前端控制器+插件,控制器+幫助程序,模型+視圖+幫助程序)正常設置它們。

我個人的經驗法則是,如果我只在一天中服務約100個請求,那麼沒有什麼理由來優化任何事情。當應用程序開始感覺遲緩,如果它產生了足夠的收入,也許我可以得到一個專用的服務器,如果沒有,總是有解決方案,如apc,memcached,beanstalkd等。

+1

「我們應該忘記小效率,大約97%的時間:不成熟的優化是萬惡之源。」唐納德克努斯。 – 2009-11-04 12:50:34

+0

謝謝。我們的遊戲已經過測試。性能確實是一個問題。特別是當我們在雲端時。每個字節計數爲$。日常需求量超過10萬。 – Murvinlai 2009-11-04 13:36:53

2

Zend Framework vs原始PHP代碼往往接近每秒1:500的請求比率。

如果你有很多時間並沒有很多錢,那就用原始的PHP開發吧。如果您沒有足夠的時間和金錢,就可以以最快速度進行開發,而不考慮性能......您可以隨時添加硬件。如果你在兩者之間徘徊,平衡它,如果你覺得合適的話。

儘管我不喜歡它,但CakePHP比ZF開發速度更快,所以對於時間緊迫而言它非常棒。 CodeIgniter比任何一個都快,但沒有更多的內置,所以它更接近於性能的結束,而不需要原始的PHP。