yii插入数据库防并发的简单代码

分享yii的一段有用的代码:

当需要让数据库某字段自增时,比如统计每天的查询量,每次请求后都把request_count+1,

如果这样写:

$model->request_count++;
$flag = $model->save();

遇到并发时会不准确,可改为:

$flag = static::updateAll([
'report_count' => new \yii\db\Expression("`request_count` + 1")
], [
'id' => $model->id
]);

同时开六个进程插入,每个进程增加100次,第一种方法只增加到了587,第二种方法增加到了600。

以上所述是小编给大家介绍的yii插入数据库防并发的简单代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • YII2数据库查询实践

    初探yii2框架,对增删改查,关联查询等数据库基本操作的简单实践. 数据库配置. /config/db.php 进行数据库配置 实践过程中有个test库->test表->两条记录如下 mysql> select * from test; +----+--------+ | id | name | +----+--------+ | 1 | zhuai | | 2 | heng | +----+--------+ 18 rows in set (0.00 sec) sql 查询方式 yii

  • Yii2框架数据库简单的增删改查语法小结

    User::find()->all(); //返回所有用户数据: User::findOne($id); //返回 主键 id=1 的一条数据: User::find()->where(['name' => 'ttt'])->one(); //返回 ['name' => 'ttt'] 的一条数据: User::find()->where(['name' => 'ttt'])->all(); //返回 ['name' => 'ttt'] 的所有数据: U

  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作. User::find()->all();    //返回所有用户数据: User::findOne($id);   //返回 主键 id=1  的一条数据: User::find()->where(['name' => 'ttt'])->one();   //返回 ['name' => 'ttt'] 的一条数据: User::find(

  • Yii2实现跨mysql数据库关联查询排序功能代码

    背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) 中有一个 user 表(记录用户信息) memory_stat (存储统计数据表) 中有一个 user_stat (记录用户统计数据) 现在在 user 表生成的 GridView 列表中展示 user_stat 中的统计数据 只需要在User的model类中添加关联 public function getStat() { return $this->hasOne(U

  • yii插入数据库防并发的简单代码

    分享yii的一段有用的代码: 当需要让数据库某字段自增时,比如统计每天的查询量,每次请求后都把request_count+1, 如果这样写: $model->request_count++; $flag = $model->save(); 遇到并发时会不准确,可改为: $flag = static::updateAll([ 'report_count' => new \yii\db\Expression("`request_count` + 1") ], [ 'id'

  • Yii框架批量插入数据扩展类的简单实现方法

    本文实例讲述了Yii框架批量插入数据扩展类的简单实现方法.分享给大家供大家参考,具体如下: MySQL INSERT语句允许插入多行数据,如下所示: INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 那么要实现批量插入,主要的任务就是按照列顺序,把数据组装成上述格式即可,可以使用sprintf和vsprintf函数来实现. 下面是一个实现批量插入的Yii扩展类的简单示例(支持VARCHAR类型数据): <?php /** *

  • asp.net 读取文本文件并插入数据库的实现代码

    由此,需要操作以下几个步骤 1,上传txt文件至公司系统 2,读取需要的内容 3,将内容插入到数据库中(需要判断重复) 4,与现有订单数据进行对比 本程序只研究读取需要的内容和插入数据库 复制代码 代码如下: using System; using System.Data; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using

  • python将数据插入数据库的代码分享

    python将数据插入数据库的方法: 首先读入数据并建立数据库连接: 然后创建数据库: 接着执行插入数据语句,迭代读取每行数据: 最后关闭数据库连接即可. 比如现在我们要将如下Excel数据表格插入到MySQL数据库中,该如何实现呢? 实现代码: #导入需要使用到的数据模块 import pandas as pd import pymysql #读入数据 filepath = 'E:\_DataSet\catering_sale.xls' data = pd.read_excel(filepat

  • Java获取网络文件并插入数据库的代码

    获取百度的歌曲名,歌手和链接!! 复制代码 代码如下: package webTools; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import

  • PHP接收json 并将接收数据插入数据库的实现代码

    最近有一个需求,前端向后台提交json,后台解析并且将提交的值插入数据库中, 难点 1.php解析json(这个不算难点了,网上实例一抓一大把) 2.解析json后,php怎样拿到该拿的值 <?php require ('connect.php'); /* 本例用到的数据: post_array={"order_id":"0022015112305010013","buyer_id":"2","seller_i

  • Python 数据库操作 SQLAlchemy的示例代码

    程序在运行过程中所有的的数据都存储在内存 (RAM) 中,「RAM 是易失性存储器,系统掉电后 RAM 中的所有数据将全部丢失」.在大多数情况下我们希望程序运行中产生的数据能够长久的保存,此时我们就需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件.将数据保存在磁盘中我们需要面对一个数据格式的问题,此时就需要引入数据库操作. 数据库是专门用于数据的集中存储和查询的软件,它便于程序保存和读取数据,且能够通过特定的条件查询指定的数据. Python

  • Mapstruct对象插入数据库某个字段总是为空的bug详解

    目录 前言 如何调试Maven插件 源码解析 前言 在一次需求的开发过程中,发现一个对象插入数据库时某个字段总是为空. 版本:lombok:1.18.24.mapstruct:1.5.2.Final 简化后的代码如下: @Autowired private PersonService personService; public void test1(){ Person person = personService.findById(1L); PersonDto personDto = Perso

  • 详解Java MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User(); user.setUserName("chenzhou"); user.setPassword("xxxx"); user.setComment("测试插入数据返回主键功能"); System.out.println("插入前主键为:

  • PHP大批量插入数据库的3种方法和速度对比

    第一种方法:使用insert into 插入,代码如下: $params = array('value'=>'50′); set_time_limit(0); echo date("H:i:s"); for($i=0;$i<2000000;$i++){ $connect_mysql->insert($params); }; echo date("H:i:s"); 最后显示为:23:25:05 01:32:05 也就是花了2个小时多! 第二种方法:使

随机推荐