概念请参考w3school文章: redis watch ,redis exec (看完基本秒懂)
(1)基本事务:
//连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //开启事务 $redis->multi(); //操作key $redis->flushAll(); $redis->incr('user_id'); $redis->incr('user_id'); $redis->incr('user_id'); $ping = $redis->ping(); //执行事务 $result = $redis->exec(); if ($result) { echo '执行事务成功' . PHP_EOL; } else { echo '执行事务失败' . PHP_EOL; } //打印执行事务可以看到所有的执行结果 var_dump($result);
输出结果:
array(5) { [0]=> bool(true) [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> string(5) "+PONG" }
(2).监视key执行事务(Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断)
<?php exec('chcp 65001'); //连接本地的 Redis 服务 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //清空redis $redis->flushAll(); //操作的redisKey $key = 'user_id'; //监视key $redis->watch($key); //开启事务 $redis->multi(); //睡眠点时间,手动开一个终端也去操作这个key sleep(60); //操作key $redis->incr($key); //执行事务 $result = $redis->exec(); if ($result) { echo '执行事务成功' . PHP_EOL; } else { echo '执行事务失败' . PHP_EOL; } //打印执行事务可以看到所有的执行结果 var_dump($result);
执行结果:
执行事务失败 bool(false)
通过经纬度转换为城市名称,并获得城市的编号,通常在全国类型的商城中比较通用。//经纬度转城市名称(返回城市id,城市名称) //$ak开发密钥,$lat纬度,$lng经度,$type返回数据类型 public function getCityName($ak,$lat,$lng)...
本篇文章不是讲解如何用.net开发自己的dll然后PHP通过com调用。主要记录PHP官方支持的DOTNET 基本语法如下:$obj = new DOTNET("assembly", "classname")a...
首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php &n...
逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event { /** &nbs...
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...
<?php $member = new class { public function getInfo() { ...