背景 我本地开发用的 php 和 nginx 都部署在 docker 中,宿主机为 MacOS 宿主机中 hosts 一个域名 127.0.0.1 abc.test,再把 nginx 容器的 80 端口映射出来。就能正常通过 abc.test 访问到 nginx 再转发给 php 看起来很完美,直到 —— 我需要在 php 中访问 abc.test 这个站点的时候 当我在 php 容器中需要解析这
标签: PHP
Yii2中手动使用内置验证码组件
原文:yii2使用验证码组件,有所修改、补充 yii2自带的例子里面有一个关于验证码的使用例子,但是本篇文章讨论的是用另外一种方式手动生成和验证验证码。 生成验证码 在要使用验证码的Controller里面实现actions方法: class TestController extends Controller{ public function actions(){ return [ ‘captch
Yii2-GridView添加导出功能
首先我们需要用Composer安装一个导出组件:kartik-v/yii2-export 这个组件依赖一个PDF导出组件kartik-v/yii2-mpdf,100多M,所以安装可能很慢,需要耐心等候 不过新版本好像默认不依赖此PDF组件了 安装完毕后,打开config/web.php,给$config变量添加一个成员: ‘modules’ => [ ‘gridview’ => [ ‘
浅谈PHP中打开文件(fopen)的一些坑
准备自己实现一个基于文件的简单缓存类,用于一些小外包项目。原本只是打算按照特定的JSON格式进行存储,然后用很方便的两个函数 file_get_content 和 file_put_content 进行读写 后来想给缓存类加个自增/减的方法,用来做简单的统计之类。如果考虑到瞬间并发情况,为了防止两个请求互相干扰,就必须得上文件锁了 首先是设置缓存,这个没啥难度: 首先一个$h = fopen($p
Yii2-GridView自定义活动列ActionColumn
本文同时收录于 超能小紫的Yii2学习笔记 用gii生成的CRUD非常方便,index视图自带的数据列表也很强大,最右侧默认还带有 查看详情、修改 和 删除 三大功能按钮 但是这三个按钮不一定够用。例如我们做文章列表时,可能还会需要 显示(发布)、隐藏(作为草稿) 之类的按钮,这时候我们就需要自定义活动列了 准备工作 首先我们跟着命名空间(yii\grid\ActionColumn)到 vendo
Yii2-GridView自定义数据列
本文同时收录于 超能小紫的Yii2学习笔记 用gii生成Model和CRUD之后,基本的增删查改和列表页都有了 但在很多时候,默认生成的列表所展示的 数据列 并不一定是我们想展示的 修改所展示的数据列 打开视图层目录,找到刚生成出来的index.php,阅读其代码 稍有常识的人都能看出, 控制数据列显示的就是GridView::widget方法的参数数组中的columns键 它大概长这样: ‘co
Yii2-GridView给关联字段添加搜索和排序功能
本文同时收录于 超能小紫的Yii2学习笔记 需求 一个试用申请平台,需要在试用申请列表(Application)内展示申请人(User)姓名 准备工作 用gii生成Model、CRUD 如果你不知道什么是gii,请不要跟别人说你会用yii 数据库结构 申请表application 含有字段 user_id 与 用户表user 的 id 字段一对一关联 第一步 给Application模型添加如下方
PHP注释的艺术——phpDoc规范
用过IDE或看过其他源码的小伙伴们应该都见过类似下面这样的注释 /** * 递归获取所有游戏分类 * @param int $id * @return array */ 看得多了就大概知道了一些规律。为了使自己的代码更加规zhuang范bi,也开始有样学样地写着这些注释 其实这种注释格式是有自己的名字的,它就叫—— PHPDOC PHPDoc 是一个 PHP 版的 Javadoc。它是一种注释 P
PHP开发中涉及到emoji表情的几种处理方法
最近几个月做微信开发比较多,存储微信昵称必不可少 可这万恶的微信支持emoji表情做昵称,这就有点蛋疼了 一般Mysql表设计时,都是用UTF8字符集的。把带有emoji的昵称字段往里面insert一下就没了,整个字段变成了空字符串。这是怎么回事呢? 原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。这要怎么办呢?我来介绍几种方法 1、使用utf8mb
Windows下nginx+fastcgi+php的并发阻塞问题
接到一个需求,两个项目之间需要以接口形式通讯。我心想curl轻松解决,Easy! 啪嗒啪嗒啪嗒……代码撸完了,本地测试一下 浏览器一直转圈圈直到超时…… Why!? 没有任何错误提示信息,日志也没有任何新记录 用POSTMAN调试了一下刚写出的接口,没问题啊? 再试一次结果依旧,重启环境后再试也依旧 经过一番测试,我怀疑是不是我本地环境无法并发? 我访问项目A是一个请求,项目A访问项目B的接口则是