最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

laravel高并发之抽奖秒杀解决方案

来源:动视网 责编:小采 时间:2020-11-02 22:07:02
文档

laravel高并发之抽奖秒杀解决方案

laravel高并发之抽奖秒杀解决方案:下面由Laravel教程栏目给大家laravel高并发之抽奖秒杀解决方案,希望对需要的朋友有所帮助!测试1.8核16G的服务器Jmeter并发2000注意不要在一台机子上测,因为网络的原因,本机上测并发1000不用锁也是正常的。可以在阿里云买台测试机1.mysql共享锁版s
推荐度:
导读laravel高并发之抽奖秒杀解决方案:下面由Laravel教程栏目给大家laravel高并发之抽奖秒杀解决方案,希望对需要的朋友有所帮助!测试1.8核16G的服务器Jmeter并发2000注意不要在一台机子上测,因为网络的原因,本机上测并发1000不用锁也是正常的。可以在阿里云买台测试机1.mysql共享锁版s


1.mysql共享锁版

sql加共享锁,stock字段减1。返回成功表示成功,返回失败表示自减失败。stock字段是无符号的

迁移文件

<?php

use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

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

 /**
 * Reverse the migrations.
 *
 * @return void
 */
 public function down()
 {
 Schema::dropIfExists('stock_test');
 }
}

代码

$model = new AppModelsStockTest();
$id = $request->input('id',1);

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

2.reids队列

  • 1.lpush加入队列
  • 2.lpop弹窗队列,成功返回对应值,不存在返回null
  • 文档

    laravel高并发之抽奖秒杀解决方案

    laravel高并发之抽奖秒杀解决方案:下面由Laravel教程栏目给大家laravel高并发之抽奖秒杀解决方案,希望对需要的朋友有所帮助!测试1.8核16G的服务器Jmeter并发2000注意不要在一台机子上测,因为网络的原因,本机上测并发1000不用锁也是正常的。可以在阿里云买台测试机1.mysql共享锁版s
    推荐度:
    标签: 抽奖 解决 秒杀
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top