php 同時実行ソリューションには、1. ファイル ロック、2. よく使用される Memcacheq、Redis などのメッセージ キュー、3. キュー サーバー、4. Memcache ロックが含まれます。
解決策:
(推奨ビデオ チュートリアル: java ビデオ チュートリアル)
1. 使用方法ファイル ロック
$fp = fopen("order.lock", "r"); if(flock($fp,LOCK_EX)){ //..处理订单的代码 flock($fp,LOCK_UN); } fclose($fp);
2、メッセージ キューを使用
Memcacheq と Radis をよく使用します。
例: ユーザーが取得できるチケットが 100 個ある場合、これらの 100 個のチケットはキャッシュに入れることができ、読み取りおよび書き込み時にロックする必要はありません。同時実行の量が多い場合、約 500 人がチケットを取得できる可能性があるため、500 人以降のリクエストはイベントの終了時に静的ページに直接転送されます。エントリーした500人のうち400人が商品を手に入れることは不可能です。そのため、列に並んだ順に先着100名のみが正常に購入できます。次の 400 名はイベント終了ページに直接移動します。もちろん、500 名と入力するのは一例であり、その数は自分で調整できます。アクティビティ終了ページでは、データベースではなく静的ページを使用する必要があります。これにより、データベースへの負担が軽減されます。
3. 分散クラスター サーバーの場合は、1 つ以上のキュー サーバーが必要です
Xiaomi と Taobao の急ぎ買いは少し異なります。Xiaomi は掴む瞬間に重点を置いています。ノルマはあなたのものです。で注文・決済が可能です。一方、タオバオは支払い時のフィルタリングに重点を置いており、多層のフィルタリングを実装しています。たとえば、10 個の商品を販売したい場合、10 人以上のユーザーに商品を取得させ、支払い中に同時フィルタリングを実行します。アイテムの数をレイヤーごとに瞬時に減らし、同時実行の量を減らします。
4. Memcache ロックを使用する
product_lock_key はチケット ロック キーです
product_key が memcached に存在する場合、すべてのユーザーが注文プロセスに入ることができます。
決済処理に入る場合は、まずadd(product_lock_key, “1″)をmemcachedに格納し、返却が成功したら決済処理に入ります。失敗した場合は、誰かがすでに支払いプロセスに入っていることを意味し、スレッドは N 秒間待機して追加操作を再帰的に実行します。
関連する推奨事項: php トレーニング
以上がPHP 同時実行ソリューションとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。