随笔分类 - php
redis里通过命名空间存储缓存,根据结构生成树型
摘要:一般为了方便管理 redis 缓存,我们通过 : 来分隔不同的 key 来进行存储缓存,这样方便查看。 例如: game:upload_role:1000 game:member_info:2000 game:member_info:state_info:3000 上面的这种结构在 Redis De
阅读全文
php使用inotify扩展监控文件或目录,如果发生改变,就执行指定命令
摘要:通过inotify扩展监控文件或目录的变化,如果发生变化,就执行命令。 可以应用于 swoole 中,如果文件发生变化,就执行 kill -USR1 进程PID 来实现热更新。 演示如下所示:
阅读全文
php使用supervisor管理进程脚本
摘要:supervisor是用python开发的一个在linux系统下的进程管理工具,可以方便的监听,启动,停止一个或多个进程。当一个进程被意外杀死后,supervisor监听到后,会自动重新拉起进程。 一、supervisor的安装 1、通过easy_install安装 2、通过yum安装 3、通过pi
阅读全文
php捕获Fatal error错误与异常处理
摘要:php中的错误和异常是两个不同的概念。 错误:是因为脚本的问题,比如少写了分号,调用未定义的函数,除0,等一些编译语法错误。 异常:是因为业务逻辑和流程,不符合预期情况,比如验证请求参数,不通过就用 throw new 抛一个异常。 在php5的版本中,错误是无法被 try {} catch 捕获的
阅读全文
laravel中视图的基本使用(七)
摘要:laravel中的视图默认保存在 resources\views 目录下。在控制器中,我们通常使用 view() 方法返回一个视图文件。 对于有多层目录结构的视图,我们可以通过 (.) 点号进行分隔。 我们可以通过 view() 的第二个参数 或 with() 方法来给视图传递数据。 有些时候我们需
阅读全文
laravel中的表单请求类型和CSRF防护(六)
摘要:laravel中为我们提供了绑定不同http请求类型的函数。 但有些时候,我们通过创建资源控制器,里面的 update() 方法绑定的是 PUT 类型的http请求。 这就需要我们通过表单提交模拟PUT请求。我们可以自已添加一个 _method 的隐藏字段,值为 PUT。 也可以使用laravel为
阅读全文
laravel中控制器的创建和使用(五)
摘要:laravel中我们可以使用 artisan 命令来帮助我们创建控制器文件。 TestController 控制器名我们可以任意指定。文件默认会创建在 app\Http\Controllers 目录下。 打开控制器文件,我们就可以添加自已的方法了。 在路由文件 routes/web.php 中配置路
阅读全文
laravel模型中非静态方法也能静态调用的原理
摘要:刚开始用laravel模型时,为了方便一直写静态方法,进行数据库操作。 直到有朋友告诉可以不用这么写,声明一个 protected 方法,方法中用 $this。在外部使用时,也可以像调静态函数一样调用。 试了一下,发现还真可以,按理说受保护的 protected 非静态方法,在外部是无法这么调用的
阅读全文
centos7下编译安装php7.3
摘要:一、下载php7.3的源码 下载php-7.3.4.tar.gz 二、安装gcc,gcc-c++,kernel-devel 三、安装php需要的依赖库 四、创建用户和组,并解压 五、进行编译安装 php的路径 --prefix 和配置文件 --with-config-file-path 路径大家可以
阅读全文
laravel路由无法访问,报404,No query results for model [App\Models\...]
摘要:今天遇到了一个问题,在routes/web.php中配置了路由,但始终无法访问该路由,一直报404。 然后我在app/Exceptions/Handler.php文件中,修改render()方法: 把异常打印出来: 先通过 php artisan route:list 查看路由列表 原因是larav
阅读全文
使用xhprof对php7程序进行性能分析
摘要:Xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。 对于还在使用php5的朋友们,可以安装pecl的xhprof扩展 但是因为长时间不更新,针对php7已无法正常安装,可以使
阅读全文
查找linux下进程占用CPU过高的原因,以php-fpm为例
摘要:很多时候,线上服务器的进程在某时间段内长时间占用CPU过高,为了优化,我们需要找出原因。 1、找出占用CPU最高的10个进程 或查看占用内存最高的10个进程 或者使用 top ,按 1 显示CPU列表,再按 shift+p 以CPU排序 2、对进程进行跟踪查看 查看进程打开的文件 查看进程在处理的文
阅读全文
php使用redis的GEO地理信息类型
摘要:redis3.2中增中了对GEO类型的支持,该类型存储经纬度,提供了经纬设置,查询,范围查询,距离查询,经纬度hash等操作。
阅读全文
php使用redis的有序集合zset实现延迟队列
摘要:延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息。 延迟队列的应用场景: 1、新用户注册,10分钟后发送邮件或站内信。 2、用户下单后,30分钟未支付,订单自动作废。 我们通过redis的有序集合zset来实现简单的延迟队列,将消息数据序列化,作为zset的value,
阅读全文
php使用redis的几种常见方式和用法
摘要:一、简单的字符串缓存 比如针对一些sql查询较慢,更新不频繁的数据进行缓存。 二、通过列表模拟简单队列 比如我们需要批量的发送邮件,可以把发送邮件的任务存入队列中,然后启多个php脚本从队列中读取任务去发送邮件。 也可以用来处理商品秒杀,用户点击抢购时,把一个个的用户抢购任务放入队列中,串行化处理,
阅读全文
php操作redis数据库方法总结
摘要:一、安装php_redis扩展,用以操作redis 选择自已系统php版本对应的扩展。 二、redis连接与验证 三、redis的字符串(string)操作 四、redis的哈希(hash)操作 五、redis的列表(list)操作 六、redis的集合(set)操作 七、redis的有序集合(so
阅读全文
OAuth2.0 协议的理解
摘要:OAuth(Open Authorization)协议就是为用户资源的授权提供了一个安全、开放、简易的标准。 OAuth在第三方应用与服务提供商之间设置了一个授权层,第三方应用通过授权层获取令牌,再通过令牌获取信息。 一、OAuth中的一些名词 Client 第三方应用程序,又称客户端。 Resou
阅读全文
YII2 在使用控制器调试微信接口时报错 Unable to verify your data submission
摘要:出现这个原因,是因为提交数据时,被YII2的CSRF验证给拦截了。 只需要在当前控制器设置一个属性,关闭该验证就可以了。
阅读全文
php5.6 版本出现 Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version 的错误
摘要:解决方法是修改php.ini配置: 把前面的分号去掉 然后重启服务器
阅读全文
sqlite 数据库错误 The database disk image is malformed database disk image
摘要:收银机上的sqlite数据库经常出现这种错误,错误的原因有可能是突然断电或是一些不规范操作导致的。 网上一般的做法有两种: 方法一: 1、在https://www.sqlite.org/download.html网站上下载sqlite-tools工具,我下载的是 http://sqlite-tool
阅读全文