ノードに接続し、PHP で接続データを取得するツールを開発しています。
私が使用しているアーキテクチャは、ノードの処理が必要な回数だけコンストラクターでフォークし、ノードに接続して接続データを取得するワーカーです (比較的短い文字列と大きな整数を持つ約 5 フィールド)。
私が直面している問題は、別の児童労働者が仕事を終えたときにデータベース接続が切断されることです。アプローチは、子供がデータベースにアクセスするたびに新しい mysql 接続を確立することです。これは良い習慣ですか?
データベースへのアクセスを許可するために、シングルトンのようなデータベース クラスを実装しましたが、実際には、クラスは意図したように 1 つの接続を使用せず、各チャイルドワーカーに mysql 接続を使用します。(私はその現象「ShareNothing」またはこのようなものについて読みました)
これは非常に重要です。デフォルトでは約 100 になるはずの mysql 接続制限について聞いたことがあります。現在、約 60 のノードを維持していますが、今後数か月でノードの数が増える可能性があります。私が現在勤務している会社では、さまざまなコンポーネントの使用に関して非常に制限があるため、ギアマンはオプションではありません。
私はアイデアが不足している点にいます。増加するノードのスケーラビリティを付与するには、データベース アクセスをどのように設計すればよいですか?
編集:アプリケーションは PHP CLI 経由で実行されています。ワーカーは、while ループで囲まれた一連のアクションを含む run 関数を開始します。シーケンスは次のように構築されます (疑似コード INC):
while(allowedToRun())
if(isConnectionStillOpen())
fetchDataFromNodes()
enterIdleRoutine
else
exit
したがって、アプリケーションは無期限に実行することを目的としています