簡體   English   中英

PHP 網站:如何管理計時器?

[英]PHP WebSite : How to manage timers?

和一個朋友我們想開發一個像ogame這樣的php游戲(就像一個huuuuuge的人)。 為了避免折斷我們的牙齒,我們開始花費大量時間設計網站並考慮要使用的技術以及如何使其適應我們的網站。 但是我們發現了一個巨大的問題,我們不確定如何解決它,這就是我來這里的原因。 首先,我了解到 ogame 是一個“php 服務器游戲”,所以我們選擇了 Symfony 技術開始(有一個堅實的結構和一個不斷發展的代碼等......)。 但是游戲必須非常動態,我們認為 Angular JS 可以幫助我們使其動態而無需刷新頁面(動畫等...)。

然而,我們考慮過如何存儲我們的信息,一開始,存儲用戶、船只和單位並不是最復雜的。 但是在計時器結束時存儲計時器以及艦隊和軍隊之間的攔截/戰斗(對應於移動)突出了一個新問題:如何做?

盡可能精確:我們認為有必要在服務器上連續執行 php 代碼,就像在 C++ 等對象語言中一樣,但我們不知道如何去做。

我們當然缺乏關於可以解決它的網絡技術或存儲這些計時器的方法(某種結構)的知識。

作為簡歷,這里有一個我們有問題的例子:

玩家正在向 (x,y) 派遣軍隊,需要 3600 秒。 一個 php 對象可能看起來像描述軍隊、目的地、到達日期等的“army_move”……Angular(或其他 JS 代碼)顯示倒計時(1h 00min 00s - 0h 59min 59s - ...)。 如果玩家停止移動,軍隊就會回來(簡單請求服務器更改數據庫中的對象)。 但如果軍隊最終設法攻擊目標,會發生什么? 如何 ? 在我們看來,服務器必須不斷檢查計時器以了解何時發送戰斗報告、進行戰斗等……但它是 php,所以怎么做? 此外,當玩家試圖在一秒鍾內攻擊自己時,如何確保該解決方案具有足夠的准確性來管理條目/攻擊? 系統在處理過程中絕不能浪費任何一秒。 我們認為將計時器存儲到數據庫中可能是一種解決方案,但顯然它需要太多的處理能力,我們會知道 ogame、travian 等游戲帶來了哪種解決方案......有沒有人知道一種結構/技術來幫助我們? 我們搜索並沒有找到任何東西,但是我們可能沒有輸入正確的關鍵字,因此歡迎提供有關它的文檔:)

感謝您閱讀我,並為我的英語道歉,我希望我已經被理解並等待您的回答:)(或問題)。

Php 是一個服務器端腳本,它在來自客戶端的每個新請求之后啟動,並在幾微秒后結束,就在響應被發送回客戶端時。 在這短時間內信息可以從數據庫中讀取或寫入數據庫。 然后,在(同一用戶的)新請求再次出現之前,可能需要幾分鍾、幾小時甚至幾個月的時間。 因此,服務器或數據庫中的計時器是無稽之談。 相反,您應該在每次請求時將實際時間存儲到數據庫中,並計算實際請求與前一個請求之間的時間差。 您可以在 javascript 中使用計時器,但當然它不會為您提供有關其他玩家的任何信息。 如果您真的需要隨時了解其他玩家的位置(例如),那么您可以考慮websockets

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM