データDB接続混乱ソリューションのスレッド同期大量限りLaravelコマンドラインツール

心の中でマルチプロセスの同期化、大容量データの

背景:同社のユーザーIDが不完全だったため、ユーザーマーク一度同期のグループからのデータを必要とするので、ユーザ・データ・ソースは、150万、600万のオーダーのグループユーザのオーダーのマイクロ文字は、あります

グループは、プログラムは、クエリインターフェイスを切った確定、同時アクセスの頻度が、それの大きさの順に、限定されるものではなく、我々は更新するように、ユーザーの身元を照会するために、同社のユーザーをトラバース

プロジェクトはlaravelを使用して、私は、実行するためのオープン15のプロセスをコマンドラインスクリプトを書きました

 

時間のPHPのマルチプロセスpcntl_forkを使用しているため

コアのコードは次の通りであります:

主なプロセスは以下のとおりです。

まず、各サブプロセスにメインプロセス割り当てのユーザーID、子プロセスをforkした後、ここに保存するRedisのキューを使用した、ポップキューが子の割り当てられたユーザーIDの範囲を取得し、その後、ライブラリアセンブリ情報要求グループにAPIをチェックし、戻り値に基づいてユーザを指定。

LaravelパッケージRedisのために与えられ、DBはシングルトン、すべての複数のプロセスに多くのお金とRedisのDBを使用していますされています:

Redisの:エラーサーバーからのラインを読みながら、

mysqlの:アウトオブオーダーパケット。予想1は19を受信しました

ああ、それはマルチプロセスは、同じ接続に起因する単一場合、溶液を読み取ります。

Redisの:ネイティブPHPのRedisの接続の使用:

        $ Redisの=新しい\ Redisの(); 
        $ RE1 = $ redis->接続(ENV( 'REDIS_HOST')、ENV( 'REDIS_PORT')); 
        $ RE2 = $ redis-> AUTH(ENV( 'REDIS_PASSWORD'));

  

mysqlの:使用してパージをlaravelとreconnetcを再接続します

            DB::purge('mysql');
            DB::reconnect('mysql');

  

 

多线程大批量数据问题解决^_^

 

おすすめ

転載: www.cnblogs.com/timseng/p/11041470.html