![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP
szulilin
php
展开
-
PHP strtotime 转月份的问题
需求输入 开始日期和结束日期,返回两个日期之间 月份的列表,包含开始和结束的月份实现可能代码会这么写function showMonthRange($start, $end) { $end = date('Ym', strtotime($end)); // 转换为月 $range = []; $i = 0; do {...原创 2020-03-16 11:58:51 · 341 阅读 · 0 评论 -
php7的三元运算符
$a = $c ?? $b;等同于 $a = isset($c) ? $c : $b;$a = $c ?: $b;等同于 $a = $c ? $c : $b;原创 2019-10-25 18:06:15 · 1436 阅读 · 0 评论 -
php 获取本机ip
有时候代码里面需要根据本机ip做一些判断,获取本机ip的代码如下参考如下,性能很高: /* * 获取本机ip */ public function getLocalIp() { $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_connect($soc...原创 2019-10-15 17:34:21 · 281 阅读 · 0 评论 -
laravel 实现数据备份
laravel有时候需要快速备份表,可参考代码如下:需要新建一个备份库 public function backupTable($table, $backupTable = false, $connectionName = 'mysql', $backupConnection = 'mysql_backup') { $sourceConnect = DB::co...原创 2019-10-15 17:32:38 · 649 阅读 · 0 评论 -
php浮点数精度的解决方式
背景在写代码的时候,遇到一些浮点数运算,例如:单价乘以数量等于总价,很习惯的写法是 $total = $price * $num;大部分情况下,这样是没问题的,但是如果是涉及到钱的计算,订单或者金融数据的计算,这个时候问题就大了,就算是保留4位小数,亿级别的订单,就会有上万的计算误差,如果是淘宝这样的,这个锅谁来背?演示很多示例都是0.58这个数,因为这个数比较特殊,其他的也有很多这样的数...原创 2019-10-12 17:41:29 · 1258 阅读 · 0 评论 -
Laravel 查询构造器get出来的数据转为数组
背景laravel查询构造器get查询出来的数据是对象类型,虽然在foreach的时候,也可以用数组操作,但是其实是有一个隐式转换的过程,但是这次需要把get出来的数据作为数组传入,一时之间还不知道怎么转,又不想foreach,ORM查询是有toArray()操作的,这个查出来就没有这个操作解决方式后面发现可以这样做$data = DB::table('test')->get()-&...原创 2019-10-12 10:40:13 · 2706 阅读 · 2 评论 -
Laravel根据Model数据复制一条记录
背景最近需要写个脚本补历史数据,要根据某条记录,复制一条记录,修改一个字段后再插入表中,原来想的比较简单,代码这样写:$oldModel = Model::query()->where('id', 123)->first();$newModel = clone $oldModel ;unset($newModel->id);$newModel->status= ...原创 2019-10-12 10:24:29 · 3103 阅读 · 0 评论 -
lumen框架记录慢日志
文章目录背景代码实现背景mysql有慢日志的功能,可以记录下执行慢的sql,但是sql的慢日志有个问题就是一旦项目大了之后,给你一个sql,你也找不到是在哪里调用的,很难定位到哪里的操作慢,所以最好是代码里面能够记录一下,哪一行代码执行的sql慢,这样就减少了不少定位问题的时间。代码实现1,找到AppServiceProvider这个类,在boot中加入如下代码: try { ...原创 2019-09-29 11:19:29 · 441 阅读 · 0 评论 -
supervisor管理lumen的队列
背景项目中使用了rabbitmq作为队列,使用lumen中的job来执行,这种方式简直开创了php异步执行的先河,使用了之后,一个字,爽,再也不用担心超时的问题了,什么大型操作都放到队列里面去搞,简直心情愉悦,没有用过laravel 的job,不要说你用过laravel,但是job的管理和运维也是个问题,如果没有统一去管理,多了之后维护是个大问题,挂了怎么办,手动重启?也没人每时每刻的看着啊,不...原创 2019-09-27 17:35:09 · 516 阅读 · 0 评论 -
php中的finally使用心得
最近在写一个laravel中间件的时候,因为里面有好几层异常的处理,感觉代码不太简洁,于是想到了finally,按照字面理解,finally是最后执行的,原以为是用来处理异常的,后来发现不管有没有异常,都会走到finally的那段代码,包括前面有return,也会走到finally代码段,后来查了一下资料,finally执行流程如图:特别要注意的是1,如果catch里面有return或者tr...原创 2019-09-25 17:30:00 · 1372 阅读 · 1 评论 -
laravel migration实践(踩坑经历)
背景数据库迁移也是laravel强大的功能之一,但是一直也只是在文档上看过,实际项目中还没有使用过,因为需要迁移的场景比较少,而且需要迁移的时候,直接mysqldump也很方便,好像不是很有必要。但是最近遇到一个问题,开发不能登机器操作数据库了,这就比较难受了,一般发布新版本,都会有一些数据库变更的操作,常见的有:加表,加字段,加索引,初始化数据,修历史数据。当然改字段一般是不会改,除非特殊情...原创 2019-09-24 11:42:46 · 3548 阅读 · 0 评论 -
php静态方法使用心得
php静态方法调用静态方法的理解php支持面向对象已经很多年了,面向对象最基础的就是类和类的实例化,使用类的时候需要先实例化一下,才能调用类的一些方法或者访问类的属性,但是实际的开发过程中,很多时候有一些需要是不用实例化的就调用的,例如help工具函数的类,本身help里面的函数没有什么关联,如果每次调用都要实例化一次的话,实在是没有这个必要,还有一些config的类也是如此,因此需要静态的方...原创 2019-08-06 15:38:19 · 118 阅读 · 0 评论 -
php foreach的使用心得
php foreachforeach是php最常用的遍历数组的方法了,以前也没太关注foreach的原理,直到最近出现了一些比较诡异的情况的时候,发现foreach的一些问题功能介绍遍历数组非引用遍历$array = [1,2,3];foreach($array as $k => $v){ $v = 4;}var_dump($array);输出:array(3) { ...原创 2019-08-06 15:04:12 · 170 阅读 · 0 评论 -
php字符串匹配相关函数性能对比
php字符串匹配相关函数性能对比常用的字符串匹配的方法(包含中文的模式)1,mb_strstr 或者不区分大小写 mb_stristr,判断一个字符串是否包含另外一个字符串2,mb_strpos或者不区分大小写 mb_stripos,返回一个字符串在另外一个字符串第一次出现的位置3,preg_match 字符串是否匹配示例代码性能比对函数循环次数字符串长度耗时(ms...原创 2019-07-31 17:36:53 · 744 阅读 · 0 评论