随笔分类 - PHP技术
PHP是世界上最好的语言,欢迎来到PHP的美妙世界!分享PHP基础、进阶及架构知识;thinkphp,laravel,yii等主流框架技术!
摘要:背景说明 业务场景中需要做基于ES的分页查询,而ES存储了上亿条数据,且数据每天还在不断增长,如何做分页查询呢(注意查询效率)? 本质就是一个深度分页查询的问题,很多人可能会尝试ES自带的滚动查询机制。但在大数据量情况下,此种方式是行不通的(不信的可以自行尝试哦)。 方案前提 1. 产品侧:在大数据
阅读全文
摘要:【项目背景】 项目中开发了统一的文件管理器,在其他如IE,Chrome,Firefox等下载正常,但是在苹果Safari浏览器下载就会出现中文名称乱码问题。 【理论知识】 主要是下载Header头不符合RFC规范导致。参考文章:http://www.sohu.com/a/334506221_4639
阅读全文
摘要:【名词解释】 悲观锁(Pessimistic Lock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁、表锁、读锁、写锁等,都是在做操作之前先上锁。 乐观锁(
阅读全文
摘要:参考文章:https://www.jianshu.com/p/9d2b576acded
阅读全文
摘要:在laravel中使用leftJoin添加多个条件时,如select a.* from a left join b on a.id = b.pid and b.status = 1这种类似sql,发现框架自身封装的leftJoin不支持多个参数传递(当然可用写原生sql),laravel框架自身封装
阅读全文
摘要:【项目背景】 在提供业务API或者提供业务服务类操作时,往往需要对很多入口参数进行验证。这个时候Yii2.0框架的动态model验证起到了很好的支撑的作用。但是很多参数验证实际同数据库model保存验证类似,希望能够提取到模型的attributeLabels()属性标签进行验证提示。而不是每个字段验
阅读全文
摘要:【项目背景】 最近在做一个restful风格的项目,发现有个表返回的json数据中id始终是string类型,但另一个表的id始终是int类型。即返回的数据类型不一致。 【原因剖析】 在yii\db\Schema类的getColumnPhpType函数中,这个函数决定了最终出来的数据的类型,代码如下
阅读全文
摘要:参考文献: https://www.cnblogs.com/zx-admin/p/11653863.html
阅读全文
摘要:参考文献: https://blog.csdn.net/u012720371/column/info/20818
阅读全文
摘要:【改造背景】 使用Yii2.0开发api时,使用asArray()函数时,框架本身默认将所有数据类型都转换成字符串处理。在与前端强类型语言交互时极不方便。所以希望改造框架返回数据表对应字段类型,而无需每次手工进行转换。 【改造步骤】 1、数据库连接配置attributes中增加两个PDO参数: re
阅读全文
摘要:// 去除首尾空白字符 ['email', 'trim'] 或 ['email', 'filter', 'filter' => 'trim'] // 验证字段必填 ['email', 'required', 'message' => 'email不能为空'] // 赋予默认值 ['age', 'de
阅读全文
摘要:一、Docker中安装配置Xdebug 通过phpinfo()输出当前安装的PHP版本信息,将信息拷贝到https://xdebug.org/wizard.php相应输入框中,系统会自动检测并推荐合适的xdebug版本,如下图所示: 点击上图所示的操作按钮,会出现如下操作引导界面: 从visual
阅读全文
摘要:前言 使用java语言开发的朋友想必对Eclipse开发工具已经不陌生了,那么Eclipse作为java主流的开发工具,是否能够开发PHP项目呢?答案如你所想,肯定是可以的!以下就是该IDE下如何配置PHP开发及调试环境的内容。亲身实践,已测试通过。 安装 1、安装php development t
阅读全文
摘要:yii2.0安装ElasticSearch安装及使用教程:https://www.yiichina.com/tutorial/1046 Elasticsearch 权威指南(中文版):https://es.xiaoleilu.com/
阅读全文
摘要:请分析以下PHP代码的输出结果: 最终的输出结果是:$a is dog $a is pig 原因分析: switch会根据条件,跳转到第一个匹配的case处开始执行。case只是一个供switch跳转的标记,并没有划分区块的作用。所以即使有多个case与switch匹配,也只会跳转到第一个匹配的ca
阅读全文
摘要:一、什么是yii2-queue? Yii2-queue是Yii2.0 PHP框架下一个消息队列拓展插件,支持基于DB, Redis, RabbitMQ, AMQP, Beanstalk 和 Gearman等。yii2-queue GitHub地址:https://github.com/yiisoft
阅读全文
摘要:经历一: 公司的项目经过阿里云的ECS升级后,发现在Yii2.0框架中,凡是数据库新增的字段(当然相关的表模型肯定是加了相应字段的),老是报“属性找不到”的问题,最后排查是数据库连接的问题。把127.0.0.1修改为localhost成功解决问题。至于127.0.0.1与localhost连接数据库
阅读全文
摘要:状态码含义 100客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101服务器已经理解了客户端的请求,并将通过Upgrade 消息头
阅读全文
摘要:-- 表的结构 `ecs_account_log`CREATE TABLE IF NOT EXISTS `ecs_account_log` (`log_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID号',`user_id
阅读全文
摘要:对于产品中经常需要生成一些缓存类的东西,比如系统基础配置,商品分类等,每次修改调整后都要手动进行缓存发布,是不是非常麻烦!这时候Yii2.0的缓存依赖发布就起到至关重要的作用了!现将主要的使用流程介绍如下: 1、在需要缓存依赖发布的数据表新增一个update_time字段,每次添加、修改记录后都会相
阅读全文