簡體   English   中英

php-僅對所有用戶執行一次功能

[英]php - execute a function just once for all users

我正在構建一個在線多人棋盤游戲,並且具有創建新棋盤的功能。 我需要在每一輪之后執行此操作,但是我似乎無法使其對所有用戶僅執行一次。 我在計時器位於頁面所在的頁面上的計時器到達0時調用該函數,因此該函數將為該頁面上的每個用戶執行。

因此,該功能生成新棋盤的次數與當時正在玩游戲的用戶的次數相同,但是我希望它僅生成一個棋盤。

因此,我的問題是如何使PHP函數僅執行一次,而不執行打開頁面時的次數?

在系統上進行編輯:用戶玩了90秒鍾,然后等待15秒,同時看到了回合結果,然后整個過程一次又一次地重復。 如果您在回合的中間進入頁面,則可以選擇等到新的回合開始后再輸入回合。 所以我不知道在哪里調用該函數。 我嘗試在顯示結果的暫停菜單開始時調用它,但是它只是對所有用戶執行該功能。它仍然可以工作,因為在所有執行結束時我仍然得到一塊板子,但這是不對的,特別是如果有被數百人玩時,董事會將產生數百次時間。 而且,生成該板的是一個在服務器上創建XML的c ++ .exe。我從PHP執行該exe並做一些其他事情。

我不知道在哪里調用該函數。 如您所說,我該如何重新渲染董事會? 該功能仍必須在某些用戶必須訪問的頁面上才能執行。 真是令人困惑。

我也嘗試在數據庫中添加信息,以查看該函數是否已被調用過,但仍然對所有用戶同時發生。

我認為我們需要有關您用於給出實際答案的系統的更多信息,但是一般的程序可能是在特定游戲中的客戶第一次報告特定回合結束時生成董事會。 將該板的信息以及游戲ID和回合號保存在數據庫表中。 然后,只要同一個游戲中的客戶報告完成同一回合,就將已保存的棋盤發送給他們,而不是再次生成新的棋盤。

使用數據庫將板保存在

當倒數達到0時

檢查數據庫中是否有一個木板,如果沒有創建新的木板(請注意,如果創建新的木板需要很長時間,則可以預先渲染一個木板)。

暫無
暫無

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

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