0

オンラインのマルチプレイヤー ボード ゲームを構築しており、新しいボードを作成する機能があります。ラウンドごとにそれを行う必要がありますが、すべてのユーザーに対して一度だけ実行することはできないようです。ゲームが配置されているページでタイマーが 0 に達したときに関数を呼び出すので、そのページにいるすべてのユーザーに対して実行されます。

このように、その時点でゲームをプレイしているユーザーの数だけ新しいボードを生成する関数ですが、ボードを 1 つだけ生成したいのです。

それで、私の質問は、開いているページの数だけではなく、PHP関数を1回だけ実行させるにはどうすればよいですか?

システムの編集: ユーザーは 90 秒間プレイし、ラウンドの結果が表示されるまで 15 秒間待機し、その後、すべてが何度も繰り返されます。また、ラウンドの途中でページに入ると、新しいラウンドが始まるまで待つか、その時点でラウンドに入るかを選択できます。そのため、関数をどこで呼び出すかわかりません。結果が表示される一時停止メニューの開始時に呼び出してみましたが、すべてのユーザーに対して機能を実行するだけです。すべての実行の最後に1つのボードを取得するため、まだ機能しますが、特にそうなる場合は正しくありません数百人以上がプレイすると、ボードは数百回生成されます。また、ボードを生成するのは、サーバー上に XML を作成する c++ .exe です。PHP からその exe を実行し、いくつかの追加作業も行います。

その関数をどこで呼び出すかわかりません。あなたが言ったようにボードを事前にレンダリングするにはどうすればよいですか? 関数は、一部のユーザーが実行するためにアクセスする必要があるページ上にある必要があります。それは気が遠くなるようなものです。

また、関数が以前に呼び出されたかどうかを確認するためにデータベースに情報を追加しようとしましたが、すべてのユーザーに対して同時に発生します。

4

2 に答える 2

1

実際の回答を得るには、使用しているシステムに関するより多くの情報が必要になると思いますが、一般的な手順は、特定のゲームのクライアントが特定のラウンドの終わりに到達したことを最初に報告したときにボードを生成することです. そのボードの情報に加えて、ゲーム ID とラウンド番号をデータベース テーブルに保存します。次に、同じゲームのクライアントが同じラウンドの終了を報告するたびに、新しいボードを再度生成するのではなく、保存されたボードを送信します。

于 2013-10-06T18:21:19.347 に答える
0

データベースを使用してボードを保存します

カウントダウンが0になると

データベースにボードがあるかどうかを確認し、そうでない場合は新しいボードを作成します (新しいボードの作成に時間がかかる場合は、ボードを事前にレンダリングできることに注意してください)。

于 2013-10-06T18:20:16.253 に答える