当前位置:首页 > php > 正文内容

laravel中设置数据库读写分离后强制使用主库查询

phpmianshi6个月前 (07-27)php237

背景


在项目比较火爆,QPS比较高时,可以设置读写分离来扩容数据库,减少数据库的压力,但是有些业务可能对数据一致性要求比较高,比如支付。

当支付成功时,再去查询订单状态时,如果查询走的从库,如果出现主从延迟,就会发现订单还是未支付状态,就会给用户带来很大困扰,在laravel或者lumen项目中如何设置某个业务强制主库查询呢?现在我们介绍几种方法。

使用model强制获取主库数据

UserModel::onWriteConnect()->get();

使用 DB 方法获取主库数据

  • 方法一:

$sql = 'select * from user';
DB::select($sql, [], false);
  • 方法二:

DB::table('user')->lock()->get();
  • 方法三:

'write' => [
            'driver'    => 'mysql',
            'host'      => env('DB_WRITE_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
#手动链接主库查询
DB::connection('write')->table('a')->get();


  • 方法四(仅供参考):

$pdo = DB::connection()->getPdo();
$data=DB::connection()->setPdo($pdo)->table('user')->get();
  • 方法五:

$sql = 'select * from user';
DB::selectFromWriteConnection($sql);


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

PHP7的垃圾回收机制

PHP7的垃圾回收机制

垃圾回收机制垃圾回收机制是一种动态存储分配方案。它会自动释放程序不再需要的已分配的内存块。 自动回收内存的过程叫垃圾收集。垃圾回收机制可以让程序员不必过分关心程序内存分配,从而将更多的精力投入到业务逻...

Fiddler抓包设置及常见问题

Fiddler抓包设置及常见问题

Fiddler简介官网:https://www.telerik.com/fiddlerFiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够...

lumen中出现Syntax error or access violation: 1055 ‘***‘ isn‘t in GROUP BY

背景laravel 5.3 以后默认开启 mysql严格模式(strict)在mysql在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,group by 的字段没有出现在 se...

Windows下nginx+fastcgi+php的并发阻塞问题

同事接到一个需求,需要调用同一个项目的另一个接口,于是CURL调用接口。代码撸完了,本地测试一下 浏览器一直转圈圈直到超时…… 百思不得其解主要是windows+nginx开发环境遇到的问题,本人很少...

从0到1搭建基于swoole的websocket服务

源码安装wget  https://github.com/swoole/swoole-src/archive/v4.5.7.tar.gz tar -xzvf ...

lumen项目集成laravelS后sentry无法上报的问题

背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目laravelS github : https://github.com/...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。