ホームページ  >  記事  >  PHPフレームワーク  >  laravelの高同時実行性宝くじフラッシュセールソリューション

laravelの高同時実行性宝くじフラッシュセールソリューション

藏色散人
藏色散人転載
2020-06-18 13:34:214784ブラウズ

Laravel の次のチュートリアル コラムでは、laravel の同時実行性の高い宝くじフラッシュ セール ソリューションを提供します。 ##########################################テスト#######

1.

laravelの高同時実行性宝くじフラッシュセールソリューション##8 コア 16G

# サーバー

##Jmeter ##同時実行性

2000

  • 注意<span style="font-size: 16px;"></span>テストしないでくださいネットワーク上の理由により、このマシンをロックせずに 1000<span style="font-size: 16px;"></span> の同時実行性をテストするのが通常です。 Alibaba Cloud でテスト マシンを購入できます<span style="font-size: 16px;">1.mysql 共有ロック バージョン</span>

sql と共有ロック、在庫 フィールドを 1 減らします。成功を返すと成功を意味し、失敗を返すとデクリメントが失敗することを意味します。在庫フィールドは署名されていません

移行ファイル

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateStockTestTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create(&#39;stock_test&#39;, function (Blueprint $table) {
            $table->increments(&#39;id&#39;);
            $table->integer(&#39;stock&#39;)->default(0)->comment(&#39;库存1&#39;);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists(&#39;stock_test&#39;);
    }
}
<span style="font-size: 16px;">コード</span>
$model = new \App\Models\StockTest();
$id = $request->input(&#39;id&#39;,1);

try {
    // 手动开始事务
    DB::beginTransaction();
    // sql加共享锁,stock字段减1。返回成功表示成功,返回失败表示自减失败。stock字段是无符号的
    $is = DB::table(&#39;stock_test&#39;)->lockForUpdate()->increment(&#39;stock&#39;,-1);
    if($is)
    {
        log_info(&#39;id=&#39;.$id.&#39;库存减1&#39;);
        // 提交事务
        DB::commit();
        return response(&#39;成功&#39;,200);
    }
    else
    {
        return response(&#39;失败&#39;,201);
    }
} catch (\Exception $exception) {
    // 回滚事务
    DB::rollBack();
    return response(&#39;失败&#39;,201);
}
2 .reids キュー

#1.

#lpush

#キューに参加

2.

lpop

ポップアップ キュー。対応する値が正常に返されます。値が存在しない場合は、 が返されます。 ###ヌル### ###########################

以上がlaravelの高同時実行性宝くじフラッシュセールソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。