![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
Me佳佳丶
出道几年的菜鸟一个
展开
-
TP6+SWOOLE开发规范
1.禁用app()方法 因为并发会拿不对当前容器2.禁用input()方法,最多允许controlle之前的阶段使用 并发场景,拿不到正确参数。3.使用go()必须使用标准模版传送门 协程使用统一标准4.禁止修改静态变量,静态变量只读不可更新 因为全局、静态变量内存常驻。多个请求会共享到静态变量,数据错乱5.使用context里面的变量 秉承自己的请求用自己的运行时变量原则 每个请求线程有自己的上下文context空间,请求生命周期都要用自己context...原创 2021-05-25 17:10:27 · 810 阅读 · 0 评论 -
swoole,协程模板
由于协程的不受控制性,业务开发中使用到协程,需要统一规范。经项目组成员达成一致,且经过多次测试使用,采用如下的一套规范代码。严格设置phpstom模版代码:复制粘贴以下模版代码:$chan = new \app\common\util\MmChannel(1);//基本原则:管道长度 = go()协程数量$CoroutineContext = get_thread_context();go(function () use ($CoroutineContext,$..原创 2021-05-25 17:08:57 · 387 阅读 · 0 评论 -
Tp6+Swoole搭建,测试协程与异步差距
由于部门的一个项目,用到了TP6+Swoole的方式重构,想偷偷师,所以自己也搭一个玩玩原创 2021-03-16 14:56:08 · 4437 阅读 · 2 评论 -
PHP安装性能分析扩展-xhprof
1、下载源码包 https://github.com/longxinH/xhprof (wget https://github.com/longxinH/xhprof/archive/master.zip) 下面截图那个是官网的,已经没有维护了,不行了。 2、编译 3、./configure --with-php-config=/usr/local/php/bin/php-config 4、make && make install 5、...转载 2021-03-05 16:08:08 · 135 阅读 · 0 评论 -
后端知识整理
cookie和session的区别和联系 区别:cookie存在于浏览器中,可存放内容较少,易被篡改,用户可以禁用cookie;session存在于服务器中,可以文件,数据库,缓存的形式存在。联系:sessionId存放于cookie中,所以禁用cookie,session也不能使用了,但可以通过重写url的方式传递cookie clone的特性和表现 protect $name = 'abc'; /** * clone的特性 */ ...原创 2020-07-22 09:49:16 · 133 阅读 · 0 评论 -
think-queue消息队列实践
使用Tp5自带的think-queue+Redis实现消息队列原创 2020-06-12 18:13:37 · 1508 阅读 · 0 评论 -
Swoole+Redis实现异步队列,处理高并发场景
Swoole+Redis编写高并发异步队列原创 2020-05-13 11:56:32 · 3235 阅读 · 0 评论 -
PHP便利方法整理
PHP便利方法整合(个人使用)原创 2020-05-06 15:18:13 · 225 阅读 · 0 评论 -
docker容器下安装各种扩展
基于解耦的理念,一个容器只做一件事情,我不想在php容器里既安装mysql,又安装redis的,所以,PHP,mysql,redis应该是各自都一个容器,如下所示我们要使用他们,只需要把他们连接起来即可,连接简单,但是php需要装各种各样的扩展来支持各种应用,今天我们就是来做一个快速安装扩展的笔记:pecl命令接下来以安装redis扩展为例,现在容器内输入下面的命令,即可下载并安装...原创 2020-04-15 18:15:05 · 947 阅读 · 0 评论 -
PHP爬取微信公众号文章(可做为扩展类直接使用)
开门见山的说,我是在GitHub上拿的代码,但由与那个项目年代比较久远了,公众号的一些规则变了,不能用了,所以我就改了部分代码,达到直接用的地步。功能:根据微信公众号链接,爬取文章的文字和图片(下载到本地),以html形式保存。直接贴代码,就一个文件,可以直接用<?phpnamespace WxCrawler;/** * 微信公众号文章爬取类 */class Wx...原创 2020-04-10 13:58:31 · 3553 阅读 · 6 评论 -
Xdebug+PhpStorm+Chrome搭建调试环境
Xdebug+PhpStorm+Chrome搭建调试环境首先,我们都知道,phpstorm这个IDE支持很多第三方软件的接入,包括Git,SVN,我们今天要接入的就是Xdebug。1、首先下载Xdebug的PHP扩展并安装。Xdebug扩展下载,选择自己对应的PHP版本下载就行2、接下来,我们来安装chrome的插件。Xdebu...原创 2020-02-26 12:26:59 · 566 阅读 · 0 评论 -
session状态的理解及表现。
一、官方session_status() 返回值为:PHP_SESSION_DISABLED会话是被禁用的。0 PHP_SESSION_NONE会话是启用的,但不存在当前会话。1 PHP_SESSION_ACTIVE会话是启用的,而且存在当前会话。2有以下几种情况,当status为1时,打印$_SESSION,会提示变量不存在。 var_dump($_SESSION)...原创 2020-02-20 15:24:14 · 1284 阅读 · 0 评论 -
TP5使用paginate分页后数据高效处理方法
tp5使用paginate分页获取数据对象之后 如何对对象进行数据添加官方文档上写的是使用each方法(5.09版本及以上才适用)$list = Db::name('user')->where('status',1)->paginate()->each(function($item, $key){ $item['nickname'] = 'think'; ...原创 2020-01-15 18:08:33 · 3468 阅读 · 2 评论 -
Docker搭建Nginx+swoole环境
又是老朋友,Docker的搭建项目,还是并发问题,我们都知道,PHP有一款很好用的扩展,swoole,swoole可以集成到PHP开发环境中,我们只需要安装到PHP扩展里就行,详细步骤看我之前的文章Docker下php容器安装swoole扩展。好了,那我们这次需要用到2个容器,一个普通的Nginx容器,另一个则是已经集成好Swoole的PHP-fpm容器,由于时间关系,我已经把集成好Swool...原创 2019-11-18 14:01:27 · 1624 阅读 · 0 评论 -
测试Redis的原子性及实现Redis的锁
这几天都在学习Redis的相关知识,发现了一个问题,Redis虽然是单线程的,但是他有一个特点:IO多路复用,这样的特点使2个请求同时对同一key进行操作时,会出现2个请求同时拿到该key的值,进行了重复的操作,在秒杀中的体现为超卖;具体代码为: public function redis1(){ $redis = new \Redis(); $re...原创 2019-11-13 16:07:27 · 1269 阅读 · 0 评论 -
ThinkPHP3.2结合jq实现图片的异步上传
thinkPHP3.2+jq插件,实现多图片异步上传。原创 2017-05-05 15:14:06 · 1800 阅读 · 0 评论 -
php+redis+TP处理并发
前两天想自己研究PHP的并发问题,看到很多人都说用redis的队列处理并发很好,所以自己也去研究了一下,下面用实际项目记录一下自己的成果。基本思路是所有操作用过redis的队列和集合处理并发1.用户抢购队列(List),user_list2.商品队列(List),goods_list3.订单信息(Hash集合),order_info4.购买成功用户(Set集合),bou原创 2017-10-27 14:32:02 · 5086 阅读 · 4 评论 -
ThinkPHP整合composer使用demo
使用composer前请安装好composer,如果未安装,可以看这篇文章 Windows下安装Composer1、由于我们已经设置了全局引用,所以,在TP根目录里面创建一个composer.json文件文件内容为:{ "require": { "monolog/monolog": "1.0.*" }}该文件含义就是引入依赖包,'monolog/...原创 2018-09-29 11:50:53 · 3134 阅读 · 0 评论 -
PHP递归获取内联表所有子列表代码
表结构如下:pid关联本表的id,以此构成内联表,常见的应用场景有:地区表、部门表等遍历部门Id为1的所有子部门信息;//递归获取子列表 public function getSubList($id){ if(!$sub_list = M('department')->where(array('pid'=>$id))->select()) ...原创 2019-04-23 02:19:59 · 386 阅读 · 0 评论 -
ThinkPHP5坑人笔记(对比Tp3.2)
1、关于数据库连接的问题;$userModel = Db::name('user'); //这种方法连接,是以类的方式,不会实例化对象Db::name('card');$userModel->find(); //查找到的数据是card表的数据,因为第二行已经把表名更改了想要实例化对象,可以直接db('user')或者创建UserModel类,然...原创 2019-06-11 16:06:11 · 501 阅读 · 0 评论 -
Docker下php容器安装swoole扩展
本人是linux菜鸟,每次命令都是上网搜才知道的,本文章直供记录自己的环境下,安装swoole的过程。在docker的php-fpm容器里,php.ini是没有的,要自己创建,目录在/usr/local/etc/php,有的话只需要在最后添加一行extension=swoole.so没有则可以使用docker命令,把php.ini文件复制到这个目录下,docker cp $PWD...原创 2019-07-19 15:45:08 · 8427 阅读 · 1 评论 -
windows下安装composer,纯手工,绝对有效
今天看了很多composer,就是为了装laravel,自己也装了两次,网上的教程虽然有很多,但绝大多数都是抄中国镜像(http://www.phpcomposer.com/)的,我自己也看了很多遍,可能是自己太笨,不好理解,装了很久才成功。现在为了造福大家,写个简单易懂,但绝对有效的教程,说实话,这东西还是有点难装的。1.来这个网址下载composer.phar文件,https://getc...原创 2017-05-11 00:34:57 · 2373 阅读 · 0 评论