代码1:for循环批量插入100W数据
<?php set_time_limit(0); $servername = "localhost"; $username = "root"; $password = "123456"; $dbname = "learn"; // 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO shop_goods (title, price) VALUES ('商品1',500)"; for ($i=0; $i <1000000 ; $i++) { mysqli_query($conn, $sql); } //计算执行时长 $runtime=time()-$_SERVER['REQUEST_TIME']; echo $runtime; //1.03分钟 mysqli_close($conn); ?>
完成时间:1.03分钟
代码2:将所有插入合并为1条Mysql语句,由于语句较长,请执行mysql命令:set global max_allowed_packet = 2*1024*1024*10;避免超长Mysql无法执行。
<?php set_time_limit(0); $servername = "localhost"; $username = "root"; $password = "123456"; $dbname = "learn"; // 创建连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检测连接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO shop_goods (title, price) VALUES "; for ($i=0; $i <1000000 ; $i++) { $sql.="('商品1',500),"; } $sql = substr($sql,0,strlen($sql)-1); mysqli_query($conn, $sql); //计算执行时长 $runtime=time()-$_SERVER['REQUEST_TIME']; echo $runtime; //4秒 mysqli_close($conn); ?>
完成时间:4秒
前面的文章对于高并发下单商品导致商品库存为负值的问题请先阅读再阅读本篇文章一定对您有帮助,建议亲手测试较好。加上文件锁后的下单处理代码:【一】.阻塞模式:(如果其他进程已经加锁文件,当前进程会一直等其他进程解锁文件后继续执行)<?php //连接数据库 $con=mysqli_connect(...
<?php $data=array('a'=>1,'b'=>2,'c'=>3,'d'=>4); extract($data); var_dump($a,$b,$c,$d); ?>在人人商城中捡到的...
通过http推送消息给socket,socket服务再向客户端推送<?php /* * Socket推送 * 请用守护进程方式启动php msgservice.php & (socket只...
php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/* * 获取当前PHP文件名称 */ if (!function_exists('phpself...
php7新增的特性(1).强制限制只能返回一种类型<?php class task { } //must return an integer function add(): int { &nb...
在项目下的composer配置文件修改(PaySdk是我这里一个支付sdk的目录,包含各种各样的支付sdk,这样写的意思让composer自动把PaySdk下的所有文件自动加载):"autoload": { &...