2013-10-06 27 views
0

我正在構建在線多玩家棋盤遊戲,並且我有一個創建新棋盤的功能。我需要在每一輪後都這樣做,但我似乎無法讓所有用戶只執行一次。當定時器在遊戲所在的頁面上達到0時,我調用該函數,因此它對該頁面上的每個用戶都執行。php - 爲所有用戶執行一次功能

因此,該函數會生成一個新的棋盤,其次數是用戶在那一刻玩遊戲的時間,但是我希望它只生成一個棋盤。

所以,我的問題是我如何使一個PHP函數只執行一次,而不是有多少頁打開?

在系統上編輯:用戶播放90秒,然後等待15秒,他們看到整個結果,然後整個過程重複一遍又一遍。如果您在該輪中途進入該頁面,您可以選擇等待直到新一輪比賽開始或進入該輪。所以我不知道在哪裏調用函數。我試着在顯示結果時暫停菜單開始時調用它,但它只是執行所有用戶的函數。它仍然有效,因爲我在所有執行結束時仍然會得到一塊板,但這不是正確的,特別是如果有成百上千的人玩,董事會將產生數百次。此外,生成該板的是一個C++ .exe,它在服務器上創建一個XML。我從PHP執行該exe文件並執行一些其他操作。

我不知道在哪裏調用該函數。我如何按照你的說法放棄董事會?該功能仍然必須位於某個用戶必須訪問才能執行的頁面上。這是令人難以置信的。

而且我也試着在數據庫中添加信息以查看函數是否曾被調用,但它仍然發生在同一時間所有用戶。

+0

使用SESSSION/COOKIE – Salim

回答

0

使用數據庫來保存您的主板在

當倒計時到0

檢查是否有數據庫中的一個板,如果不能創造新的董事會(要知道,如果它需要很長的時間來創建一個新的電路板,你可以預先渲染一個電路板)。

1

我認爲我們需要獲得更多有關您用來給出實際答案的系統的更多信息,但一般程序可能是在特定遊戲中的客戶端第一次報告達到特別的一輪。保存該板的信息,以及數據庫表中的遊戲ID和整數。然後,每當同一遊戲中的客戶報告完成同一回合時,向他們發送已保存的板,而不是再次生成新的板。

+0

檢查我在系統上的編輯。 – vstudio

+0

是的,它仍然聽起來像這是你想要做的。您每次加載頁面時都必須爲每個用戶調用一個函數,而不是「生成一個新的板子」函數,您將調用「檢查此輪的板子是否已生成」函數。 – octern