![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
YII
dj1540225203
加油打工人
展开
-
YII2 结合redis分页获取第三方未知数据结构处理
yii原创 2022-08-18 10:31:56 · 352 阅读 · 0 评论 -
关于Yii2批量更新的操作
批量更新原创 2022-08-03 11:27:09 · 2278 阅读 · 0 评论 -
PHP Warning ‘yii\base\ErrorException‘ with message ‘count(): Parameter must be an array or an object
大伙都知道命令行执行时很严格的,但凡有点小警告也会导致执行出问题。这不刚说完,在本地开发环境执行发现了一个报错。其实这个是yii底层没有更新,对php版本兼容的问题,改下下面就好了其他框架也一样的解决方案...原创 2022-05-27 15:55:23 · 1176 阅读 · 0 评论 -
Yii2底层 开发新模块
假设有这么一个场景;之前你们的业务都是基于微信的,整个项目任何操作都是关于微信;比如你是做微信小程序服务平台的,底层代码已经非常非常多了,这个时候假设让你再拓展一个支付宝小程序服务商处理,需要兼容微信;支付宝有工具可以进行微信小程序代码转为支付宝小程序,但是也是有很多东西要修改的。下面说一下如何从底层兼容。可能任何表都要加一个字段区分支付宝或者小程序,假设增加一个type字段;就默认为0吧,支付宝为1;下面在底层从整个系统区分它们。①增加一个类,重写底层模型类逻辑。<?phpnames原创 2022-03-03 19:58:01 · 234 阅读 · 0 评论 -
Yii2之数据迁移和内部封装对数组等操作
一般项目中都有有个对于项目的SQL维护的一个文档;程序员们对增删改表结构都会记录到这个表中,但是会存在一个问题就是每次都需要记录,而且还有可能记录失误等最终导致上线后因为字段不存在等问题导致出bug;如何避免这个问题呢?最好的方案是使SQL的变化也记录到git仓库管理中,这样即使A程序员改了表结构,那么B程序员拉代码的时候可以知道变化;从而更新程序员本地的代码结构保持一致。那么如何让所有程序员都知道表结构变化呢?方案一:记录到公共知识库,而已知识库中对每次分支版本都有对应的记录,以及修改的程序员名称和时原创 2022-02-26 13:25:05 · 195 阅读 · 0 评论 -
yii2 记录所有执行的sql日志到文件
通过web页面入口操作的的都可以记录'log' => [ 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'enabled' => env('LOG_ENABLED', true), 'levels' => env('LOG_LEVELS',原创 2022-02-22 10:18:09 · 880 阅读 · 0 评论 -
Yii2 中有趣的events事件
Yii2 EVENT事件的了解原文地址:Yii2 EVENT事件的了解 - Hzhihua - 博客园参考资料:与《Yii框架》不得不说的故事—扩展篇 事件(Event) — 深入理解Yii2.0最近一直在学习Yii2框架,在这记录自己对Yii2事件的了解事件介绍使用事件,可以在特定的时点,触发执行预先设定的一段代码,事件既是代码解耦的一种方式,也是设计业务流程的一种模式。现代软件中,事件无处不在,比如,你发了个微博,触发了一个事件,导致关注你的人,看到了你新发出来的内容。对于事件而言转载 2021-10-14 09:28:56 · 85 阅读 · 0 评论 -
批量修改订单类型,具体到各类情况精确打印输出
如果给你一个批量数据,比如订单数据,订单的状态可能更加很多个字段决定的,这些订单类型还可能很多种类型的情况下,去和第三方对接或者ERP对接数据的时候;怎么做到精确输出所有信息?一条不漏,一条不错呢?①系统中定义一套规则类似,支付宝等之类的需要验签的规则。②进行逻辑代码的处理。本文主要讲逻辑代码:<?phpnamespace app\modules\oms\models;use app\modules\api\models\integralmall\OrderSubmitPrevi原创 2020-11-30 15:03:41 · 354 阅读 · 0 评论 -
如何导出千万级别数据?
简单参考:PHP快速导出百万级数据到CSV或者EXCEL文件复杂参考:PHP百万级数据导出方案(多csv文件压缩)//简单的使用function test(){ set_time_limit(0); //设置程序运行内存 ini_set('memory_limit', '128M'); $fileName = '测试导出数据'; header('Content-Encoding: UTF-8'); header(原创 2020-11-25 19:43:25 · 1378 阅读 · 0 评论 -
简单获取网络图片写入服务器封装
获取网络图片,写入服务器。 //获取网络图片到临时目录 private function saveTempImage($url) { if (!is_dir(\Yii::$app->runtimePath . '/image')) { mkdir(\Yii::$app->runtimePath . '/image'); } $save_path = \Yii::$app->runtimePa.原创 2020-11-24 15:11:50 · 134 阅读 · 0 评论 -
curl进程卡死思考
同事在做一个curl操作访问第三方,看起来简简单单的一个问题,竟然导致了进程卡死,就一个方法在前端调用第三方接口的时候,疯狂点击,整个测试环境都会奔溃!分析原因:1.第三方的问题?排查不是!2.服务器的问题:php.ini单进程最大执行时间不够?内存不够?排查都不是。3.代码问题,未设置超时时间!使用top命令分析服务器性能!内存完全够!!!!查看php.ini最大执行时间,也完全够!参考:http://www.itxm.cn/post/5634.html可以排查内存是否足够。.原创 2020-11-24 10:55:05 · 1673 阅读 · 0 评论 -
给你一个sql文件,你能动态化写入数据库吗?
如果给你一个导出来的sql文件,做数据库迁移或者啥的操作。你是使用便捷器替换然后运行sql语句,还是写一个方法让他自己跑呢?如果还存在需自行插入的变记录呢?下面写个方法去跑,省事,其他语言思想类似,还可以做安装操作!<?php/** * Created by IntelliJ IDEA. * User: Mr.DJ * Date: 2020/10/30 * Time: 16:51 */namespace app\models;use yii\db\Connection;us原创 2020-11-23 10:06:05 · 180 阅读 · 0 评论 -
php之压缩文件
使用场景:大文件下载,源码压缩,动态化压缩(给到每个客户的代码不一样)等。环境:linux和windows基本一致的,需要安装php压缩拓展zip/zlib之类(根据自己使用的压缩类型选择);可以使用php -m查看是否安装。代码:composer相应的拓展包进行使用。如:D:\phpstudy_pro\WWW\o2o\vendor\comodojo\zip之类。public function actionDownload() { $entryUri = str_rep原创 2020-11-04 09:54:46 · 253 阅读 · 1 评论 -
一个方法操作添加和更新小技巧
处方药审核需要微信比较严格,商品上架要审核的,做一个一键上下架功能方便微信审核。效果如下:产景说明:如果是新客户没有操作过,新增一条改客户的全部处方药商品记录;如果是旧客户(操作过了)保留一份旧的处方药商品记录;通过判断后台操作的是否显隐藏,只用一个方法,你会如何处理呢?上代码<?php/** * Created by IntelliJ IDEA. * User: Administrator * Date: 2020/11/3 * Time: 13:52 */namesp原创 2020-11-03 17:39:03 · 186 阅读 · 0 评论 -
优化框架”继承“,解决系统性能问题
作为第三方开发;自然客户数不少;又因为每个客户有好几百家连锁门店;自然门店后台操作非常频繁;光是登录操作每天就有上万家门店后台同时登录;殊不知一个小小的登录也会造成非常大的问题;国庆过后一段时间;性能问题就遭受了考验!客户群炸了!基本信息如下,都是反馈门店后台扫码登录异常卡顿。1.配置代理:在不影响生产的使用的情况下进行nginx.conf配置。//使用webs入库测试!location = /webs/store.php { if ($request_uri ~* "r=shop%原创 2020-11-03 11:05:07 · 159 阅读 · 0 评论 -
mysql字段里含有转义字符的替换处理
由于业务需要,我们可能在一个字段中保存着一个非常复杂的字段;它的内容诸如此类;因为mysql的保存机制特殊字符啥的还加了转义\导致想直接更新字段中某个单词或者/pages/share/XX,如果是sql处理非常非常还很容易出错。因此改用PHP方法去处理。场景使用:动态化客户小程序菜单;菜单数据入库处理;小程序因为代码量太大需分包处理导致生产客户小程序页面菜单与库中数据不一致报错。"{\"user_center_bg\":\"https:\/\/st.lihuobao.cn\/web\/stat原创 2020-08-07 18:00:45 · 1637 阅读 · 0 评论 -
Redis使用列表
redis是存于内存和磁盘;毕竟存在于内存的东西,对一些必须要求准确的数据当然有所顾虑,但是它对于一些对准确性不是要求非常高的确实非常友好,如页面或者部分数据缓存优化等等。建议学习 Redis基础使用场景介绍:线下积分第三方接口推送不稳定;结合定时任务处理。有时候有个很蛋疼的事就是第三方的接口调用明明是同一个接口但是有时候返回的数据确实不一样的,具体是第三方在内部调试还是咋地我们不得而知,毕竟第三方也是由程序员在开发的,说不定有时还是同步在开发的情况。别人我们管不了,但是我们可以做“预测”。上代码:原创 2020-07-20 11:49:50 · 145 阅读 · 0 评论 -
九宫格积分抽奖
积分抽奖是非常常用的一个模块,里面涉及的业务非常复杂,如果需要对接ERP还需要对数据做事务同步等一系列除了,今天主要讲"独占锁"机制,核心是:一个用户点击立即抽奖进行表行级锁定。废话不多说上效果:上代码:乐观锁与悲观锁的生动举栗讲解public function lottery() { $list = PondSetting::findOne(['store_id' => $this->store_id]); if ($list['star原创 2020-07-16 16:18:15 · 1491 阅读 · 0 评论 -
YII2之with与joinWith的区别
原创 2020-05-05 14:26:25 · 778 阅读 · 0 评论 -
优化数据库引擎和字符集思路
很多时候像事务之类的要Innodb才支持,如果给你优化,你怎么通过代码然后让客户可以自己点击实现呢?直接上代码:public function run(){ if (!$this->validate()) { return $this->errorResponse; } switch ($this->action) { ...原创 2020-05-05 13:58:26 · 126 阅读 · 0 评论 -
YII2之账号密码登陆
public function login(){ if (!$this->validate()) { return $this->errorResponse; } $admin = Admin::findOne([ 'username' => $this->username, 'is_delete...原创 2020-05-03 20:19:44 · 438 阅读 · 0 评论 -
YII2之主键中$admin = \Yii::$app->admin->identity类似这个值怎么获取?
所谓饮水思源?不能只是工具,要灵活运用!直接上代码:private function checkExpire(){ /** @var Admin $admin */ $admin = \Yii::$app->admin->identity; //看到这个是不是很疑惑啊?phpstorm点击有没有跳转到定义的地方 if ($admin->exp...原创 2020-05-03 12:00:17 · 515 阅读 · 1 评论 -
秒杀日期思想与赋值
看了上面的效果有没有想过是怎么做到的?public function search(){ if (!$this->validate()) { return $this->errorResponse; } list($begin_date, $end_date) = self::getDate($this->month); ...原创 2020-05-03 03:14:22 · 177 阅读 · 0 评论 -
多品规修改具体的某个规格的价格思路
数据记录是这样的:这是多品规的情况;如果让你更改具体某个规格的价格你会有什么想法吗?/** * @param $id * @param $index * @param $price * 秒杀价格修改 */public function actionMiaoshaPriceEdit($id, $index, $price) //$index是数组的索引!{...原创 2020-05-03 02:57:25 · 258 阅读 · 0 评论 -
你怎么确定创建的订单号一定是唯一?
订单号唯一的方式有很多;时间戳+啥啥啥的;但是也可以换个角度思考:public function getOrderNo(){ $order_no = null; while (true) { $order_no = date('YmdHis') . mt_rand(100000, 999999); $exist_order_no = Orde...原创 2020-05-03 03:38:22 · 696 阅读 · 0 评论 -
判断上传文件后缀名和压缩文件上传
看到这个上传压缩代码,记录一下:public function search(){ if (!$this->validate()) { return $this->getErrorResponse(); } set_time_limit(0); $filename = $_FILES['excel']['name']; ...原创 2020-05-05 12:53:55 · 690 阅读 · 0 评论 -
YII2 with的使用
参考:https://www.yiichina.com/tutorial/1087下面这种最常用很多场景都足够使用了原创 2020-05-02 21:15:39 · 1164 阅读 · 0 评论 -
csv文件导入之坑(大坑,不注意全盘皆奔)
接手新公司项目要做批量插入和批量更新商品信息功能的开发;这可以说是遇到了很多坑;首先是csv留空和输入0在php接收处理的方式是不一样的,empty没用的,产品又允许客户可填可不填等等;然后我就参考了公司项目就方法的写法进行搬砖操作;//例子大概:public function actionBatchPrice(){ set_time_limit(0); if (\Yii...原创 2020-05-02 20:28:02 · 4057 阅读 · 1 评论 -
YII2之attributes
YII2的这个方法其实就是将请求的URL全部转成键值对的形式!接收处理;$form->attributes = \Yii::$app->request->get();例子如下:Array( [goods] => [store] => app\models\Store Object ( [_a...原创 2020-05-02 20:20:41 · 2959 阅读 · 0 评论 -
代码公用思想
/** * 体验成员管理 * 官方文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489140588_nVUgx&token=&lang=zh_CN * @param int $type *...原创 2020-05-02 16:24:36 · 159 阅读 · 0 评论 -
YII2之save函数
大伙有没有思考过这样一个问题:想打印save执行执行的sql?1.如果想校验属性是否赋值错误可以这样玩;在save之前使用 $form->validators;var_dump($form->getErrors());之类打印;如果是返回空数组说明没错 2.还有种情况是你可以自己故意写错字段名称使其报错观察;public function actionExamine()...原创 2020-05-02 12:39:34 · 1786 阅读 · 0 评论 -
YII2跳过rule检查
原创 2020-05-02 11:25:04 · 365 阅读 · 0 评论 -
YII2防止表单重复提交
原创 2020-04-23 23:56:19 · 420 阅读 · 0 评论 -
YII之砍价剩余时间
// 获取砍价剩余时间/** * @param $bargainOrder BargainOrder * @return int */private function getTime($bargainOrder){ if($bargainOrder->status != 0){ return 0; }else{ $addtime ...原创 2020-04-05 00:54:30 · 82 阅读 · 0 评论 -
YII find之类方法使用
https://blog.csdn.net/guacuo1042/article/details/78802218User::find()->all(); 此方法返回所有数据User::findOne($id); 此方法返回返回回主键键id=1 的一条数据条数据数据据举个例子子User::find()->where(['name' => '小伙儿'])->one...原创 2020-04-04 23:44:43 · 268 阅读 · 0 评论 -
YII之模型添加默认属性值
//通过方法添加属性默认值也是可以的!public function rules(){ return [ [['app_id', 'alipay_public_key', 'app_public_key', 'app_private_key', 'cs_tnt_inst_id', 'cs_scene'], 'trim'], [['app_id', ...原创 2020-04-04 23:27:43 · 241 阅读 · 0 评论