基本的に、どのソフトウェア プラットフォームもこの問題に立ち向かうことになります。あなたが理解したように、ほとんどはスレッド化で解決します。PHPではスレッド化が可能ですが。MAJORHAXXX が必要です。php 内からコマンドライン php スレッドを起動するなど。
本当に理想通りにはなりません。
ただし、これを回避する方法は他にもあります。
ただし、最初にこのリストのすべてのマークを確認する必要があります。
[] - 私のゲームでは、プレイヤーの位置や複雑な動きなど、サーバーを常にチェックし続ける必要はありません。チャット ルーム レベルのデータ転送と更新レートを超えるものは、このボックスをオフのままにしておく必要があります。
[] - 私のゲームは、サーバーから何も伝える必要はありません。クライアントが必要なものを何でも要求することはまったく問題ありません。
[] - 私のゲームでは、リクエストを完了するのにかかる時間よりも長く、複雑な世界のシミュレーションをサーバー上で実行し続ける必要はありません。チャットを追跡することと、物理学とグラフィックスの変更を行うことは別のことです。
これらのチェックボックスをすべてオンにした場合、PHP はまだゲーム内にあります。さもないと。気にしないでください。
基本的に、私がここで言いたいのは、PHP は実際にはマルチプレイヤーではなく、ターン制であるか、少なくともあまりインタラクティブではないゲームに適しているということです。しかし、プレーヤーなしで物事を進めなければならない場合、PHP は顔をしかめます。
ブードゥーレベル
しかし、単にこれをしなければならない場合。それを回避する方法があります。
A - ワールドを実行する PHP デーモンを作成し、他のすべてのトラフィックを、データベースと対話する getter または setter 要求ファイルにパイプします。そのため、ゲーム ワールドの状態の取得を要求したり、プレイヤーが実行した値を設定したりできます。他のすべてのゲーム世界関連のものはデーモンによって処理され、ゲーム自体はデータベースで行われます。
B - デーモンではなく、cron を使用します。(危険ですが、私たちはすでにあなたをリスクテイカーとして確立していますよね?)
C - デーモンのみを試行し、ソケットをリッスンしてから、(exec() を介して) スレッドを送信して応答します。上記の AndreKR のアイデアのようなものですが、寝る必要はありません。ここでの問題は、ほとんどの場合、欠落したり、切断されたりすることです。そして、デーモンが何らかの形で 2 回実行されると、すべてが爆発する可能性があります..