浅谈PHP中打开文件(fopen)的一些坑

准备自己实现一个基于文件的简单缓存类,用于一些小外包项目。原本只是打算按照特定的JSON格式进行存储,然后用很方便的两个函数 file_get_content 和 file_put_content 进行读写 后来想给缓存类加个自增/减的方法,用来做简单的统计之类。如果考虑到瞬间并发情况,为了防止两个请求互相干扰,就必须得上文件锁了 首先是设置缓存,这个没啥难度: 首先一个$h = fopen($p

Yii2-GridView常用代码块、笔记

使数据默认倒序排列 在该模型对应的Search模型的search方法中,实例化ActiveDataProvider类时修改参数、添加sort键。例如:

列添加最低宽度或其他属性 添加contentOptions键即可。例如:

分页添加“首页”和“尾页” 在GridVi

Composer使用笔记

这年头搞PHP开发的要是跟人说不会用Composer都丢人啊 然而我也只是停留在“能用”的层面上,很多命令还是得边查边用 所以汇总一下,省事儿,用多了就能背下来了 安装Composer 自己看吧,不再赘述 配置Github-token 首先你得有个Github账号,然后进入这里,生成一个Personal access tokens,很简单,把描述填一下、啥都不用勾选默认就行。然后把生成的一串tok

Yii2-GridView自定义活动列ActionColumn

本文同时收录于 超能小紫的Yii2学习笔记 用gii生成的CRUD非常方便,index视图自带的数据列表也很强大,最右侧默认还带有查看详情、修改和删除三大功能按钮 但是这三个按钮不一定够用。例如我们做文章列表时,可能还会需要显示(发布)、隐藏(作为草稿) 之类的按钮,这时候我们就需要自定义活动列了 准备工作 首先我们跟着命名空间(yii\grid\ActionColumn)到 vendor\yii

Yii2-GridView自定义数据列

本文同时收录于 超能小紫的Yii2学习笔记 用gii生成Model和CRUD之后,基本的增删查改和列表页都有了 但在很多时候,默认生成的列表所展示的 数据列 并不一定是我们想展示的 修改所展示的数据列 打开视图层目录,找到刚生成出来的index.php,阅读其代码 稍有常识的人都能看出, 控制数据列显示的就是GridView::widget方法的参数数组中的columns键 它大概长这样: [cr

Yii2-GridView给关联字段添加搜索和排序功能

本文同时收录于 超能小紫的Yii2学习笔记 需求 一个试用申请平台,需要在试用申请列表(Application)内展示申请人(User)姓名 准备工作 用gii生成Model、CRUD 如果你不知道什么是gii,请不要跟别人说你会用yii 数据库结构 申请表application含有字段 user_id 与用户表user的 id 字段一对一关联 第一步 给Application模型添加如下方法 [

一次WebSocket项目实战后总结的经验

项目需求(部分) 宴会参与者微信扫码进入游戏进行签到,签到后头像出现在大屏幕上,经过数轮抽奖最终决出3位终极大奖获奖者。获奖者扫码进入赛跑页面,摇动手机跑步。大屏幕上实时显示3位获奖者的头像和跑步进度(头像从左向右移动)。到达终点后手机端显示完成及耗时 实现思路 Mysql记录参与者信息、状态 每当一个参与者签到时,则将其信息存入Redis队列,等待大屏幕AJAX轮询获取 使用Workerman的

慎用Sublime的sftp插件,一不小心就可能把包含服务器信息的sftp-config.json传上去。请各位不要怀疑自己手贱的程度,我身边某人已经发生过这样的惨案了

target=”_blank”导致父页面被跳转的安全漏洞

#漏洞预警#国外网友近日曝出大部分网站都忽视了的安全漏洞,包括 Facebook,Twitter,Google 等都被检测出带有 target="_blank" 安全缺陷。 你可以点击 这里 测试这个安全问题。带有 target="_blank" 跳转的网页拥有了浏览器 window.opener 对象赋予的对原网页的部分权限,这可能会被恶意网站利用。 [crayon-59c21a16aa85d0