- 博客(29)
- 收藏
- 关注
原创 TP6+SWOOLE开发规范
1.禁用app()方法 因为并发会拿不对当前容器2.禁用input()方法,最多允许controlle之前的阶段使用 并发场景,拿不到正确参数。3.使用go()必须使用标准模版传送门 协程使用统一标准4.禁止修改静态变量,静态变量只读不可更新 因为全局、静态变量内存常驻。多个请求会共享到静态变量,数据错乱5.使用context里面的变量 秉承自己的请求用自己的运行时变量原则 每个请求线程有自己的上下文context空间,请求生命周期都要用自己context...
2021-05-25 17:10:27
870
原创 swoole,协程模板
由于协程的不受控制性,业务开发中使用到协程,需要统一规范。经项目组成员达成一致,且经过多次测试使用,采用如下的一套规范代码。严格设置phpstom模版代码:复制粘贴以下模版代码:$chan = new \app\common\util\MmChannel(1);//基本原则:管道长度 = go()协程数量$CoroutineContext = get_thread_context();go(function () use ($CoroutineContext,$..
2021-05-25 17:08:57
445
转载 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
183
原创 后端知识整理
cookie和session的区别和联系 区别:cookie存在于浏览器中,可存放内容较少,易被篡改,用户可以禁用cookie;session存在于服务器中,可以文件,数据库,缓存的形式存在。联系:sessionId存放于cookie中,所以禁用cookie,session也不能使用了,但可以通过重写url的方式传递cookie clone的特性和表现 protect $name = 'abc'; /** * clone的特性 */ ...
2020-07-22 09:49:16
160
原创 docker容器下安装各种扩展
基于解耦的理念,一个容器只做一件事情,我不想在php容器里既安装mysql,又安装redis的,所以,PHP,mysql,redis应该是各自都一个容器,如下所示我们要使用他们,只需要把他们连接起来即可,连接简单,但是php需要装各种各样的扩展来支持各种应用,今天我们就是来做一个快速安装扩展的笔记:pecl命令接下来以安装redis扩展为例,现在容器内输入下面的命令,即可下载并安装...
2020-04-15 18:15:05
996
原创 PHP爬取微信公众号文章(可做为扩展类直接使用)
开门见山的说,我是在GitHub上拿的代码,但由与那个项目年代比较久远了,公众号的一些规则变了,不能用了,所以我就改了部分代码,达到直接用的地步。功能:根据微信公众号链接,爬取文章的文字和图片(下载到本地),以html形式保存。直接贴代码,就一个文件,可以直接用<?phpnamespace WxCrawler;/** * 微信公众号文章爬取类 */class Wx...
2020-04-10 13:58:31
3784
6
转载 基于Docker的Mysql主从复制搭建
为什么基于Docker搭建?资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别利用Docker搭建主从服务器首先拉取docker镜像,我们这里使用5.7版本的mysql:docker pull mysql:5.7然后使用此镜...
2020-03-10 14:14:12
152
原创 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
629
原创 Mysql共享锁、排他锁、悲观锁、乐观锁的区别
一、相关名词|--表级锁(锁定整个表)|--页级锁(锁定一页)|--行级锁(锁定一行)|--共享锁(S锁,MyISAM 叫做读锁)|--排他锁(X锁,MyISAM 叫做写锁)|--悲观锁(抽象性,不真实存在这个锁)|--乐观锁(抽象性,不真实存在这个锁)其中,共享锁和拍他所都是悲观锁,乐观锁不存在于mysql中,只是一种代码的逻辑实现,所以mysql的锁都是悲...
2020-02-21 14:34:04
1270
原创 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
1389
转载 MySQL的索引是怎么加速查询的?
MySQL的索引是怎么加速查询的?MySQL 的索引长什么样子?索引到底是怎么加速查询的?事实上,在你还没有执行create index语句的时候,MySQL 就已经创建索引了。让我们从建表开始吧。聚簇索引执行建表语句:CREATE TABLE `student` ( `id` BIGINT UNSIGNED AUTO_INCREMENT NOT NUL...
2020-02-20 09:56:58
1152
原创 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
3567
1
原创 Docker搭建Nginx+swoole环境
又是老朋友,Docker的搭建项目,还是并发问题,我们都知道,PHP有一款很好用的扩展,swoole,swoole可以集成到PHP开发环境中,我们只需要安装到PHP扩展里就行,详细步骤看我之前的文章Docker下php容器安装swoole扩展。好了,那我们这次需要用到2个容器,一个普通的Nginx容器,另一个则是已经集成好Swoole的PHP-fpm容器,由于时间关系,我已经把集成好Swool...
2019-11-18 14:01:27
1684
原创 测试Redis的原子性及实现Redis的锁
这几天都在学习Redis的相关知识,发现了一个问题,Redis虽然是单线程的,但是他有一个特点:IO多路复用,这样的特点使2个请求同时对同一key进行操作时,会出现2个请求同时拿到该key的值,进行了重复的操作,在秒杀中的体现为超卖;具体代码为: public function redis1(){ $redis = new \Redis(); $re...
2019-11-13 16:07:27
1315
原创 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
8502
1
原创 ThinkPHP5坑人笔记(对比Tp3.2)
1、关于数据库连接的问题;$userModel = Db::name('user'); //这种方法连接,是以类的方式,不会实例化对象Db::name('card');$userModel->find(); //查找到的数据是card表的数据,因为第二行已经把表名更改了想要实例化对象,可以直接db('user')或者创建UserModel类,然...
2019-06-11 16:06:11
540
原创 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
410
原创 Docke搭建Nginx+php-fpm+https
先创建一个共有的网络docker network create -d bridge my-net创建php-fpm容器docker run -d -it --rm --name my-php --network my-net -v/root/docker/app/test:/usr/share/nginx/html php:7.1-fpm要注意的是PHP的容器也要挂在文件目录-...
2019-04-12 20:18:03
546
原创 Docker下配置Nginx反向代理,搭建集群服务器
之前一直想搞一搞集群服务器,但碍于集群服务器要多个服务器,我就只有一个云服务器,理论上是集群不了,但Docker很好的解决了这个问题,有了docker,一个端口就可以成为一个服务器,可以顺手实验自己的集群测试。1.先创建2个nginx的容器,当做web服务器,具体方法可以看我上一篇docker笔记docker小笔记。2.分别测试两个web服务器运行情况,显示的内容要不一样,这样才可看出...
2018-11-09 15:12:47
1180
原创 ThinkPHP整合composer使用demo
使用composer前请安装好composer,如果未安装,可以看这篇文章 Windows下安装Composer1、由于我们已经设置了全局引用,所以,在TP根目录里面创建一个composer.json文件文件内容为:{ "require": { "monolog/monolog": "1.0.*" }}该文件含义就是引入依赖包,'monolog/...
2018-09-29 11:50:53
3168
原创 docker小笔记
镜像:richarvey/nginx-php-fpm(PHP-NGINX集成镜像)nginx服务器的配置文件目录:cd /etc/nginxhtml目录:cd /var/www/html挂载本地目录-v /root/docker/nginx/nginx.conf:/etc/nginx/nginx.conf容器连接(最新文档建议使用网络连接容器)--li...
2018-08-16 18:21:13
331
原创 php+redis+TP处理并发
前两天想自己研究PHP的并发问题,看到很多人都说用redis的队列处理并发很好,所以自己也去研究了一下,下面用实际项目记录一下自己的成果。基本思路是所有操作用过redis的队列和集合处理并发1.用户抢购队列(List),user_list2.商品队列(List),goods_list3.订单信息(Hash集合),order_info4.购买成功用户(Set集合),bou
2017-10-27 14:32:02
5165
3
原创 windows下安装composer,纯手工,绝对有效
今天看了很多composer,就是为了装laravel,自己也装了两次,网上的教程虽然有很多,但绝大多数都是抄中国镜像(http://www.phpcomposer.com/)的,我自己也看了很多遍,可能是自己太笨,不好理解,装了很久才成功。现在为了造福大家,写个简单易懂,但绝对有效的教程,说实话,这东西还是有点难装的。1.来这个网址下载composer.phar文件,https://getc...
2017-05-11 00:34:57
2428
转载 sql的优化
网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在
2017-05-05 15:31:08
261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人