php
花大师
不要假装很努力,结果不会陪你演戏!
展开
-
复盘社区线上故障-504 Gateway Time-out
早上10点40左右,监控突然狂报警,社区出现了大量点504于是登上去其中一台服务器step1:先使用top 看了下当前的负载。一分钟之内达到了1.2,要说不算高,但我们社区并没有什么大的流量。不应该这么高。按了c键,发现是fpm占用的cpu 很高。step2: 使用 ps -aux 查看了下正在执行的任务。并无发现任何异常。但感觉是task导致。step3: 查看cat /etc...原创 2020-04-13 23:22:07 · 211 阅读 · 0 评论 -
常用地址收集
1、get\post区别https://www.zhihu.com/question/285867912、一文搞定 UDP 和 TCP 高频面试题https://mp.weixin.qq.com/s/Hda0LCYAKTvwfUMMm_i4Ng原创 2020-03-07 12:57:48 · 812 阅读 · 0 评论 -
php 设计模式
收藏地址:https://learnku.com/docs/php-design-patterns/2018原创 2019-03-29 09:29:20 · 148 阅读 · 0 评论 -
[php]文字生成图片imagettftext(): any2eucjp(): invalid code in input string问题解决
源地址:http://blog.sina.com.cn/s/blog_6d677b680100tqb3.html在生成图片的过程中使用了imagettftext(),发现该函数imagettftext()文档标 明只接受UTF-8编码,但如果PHP编译时启用–enable-gd-jis-conv选项的话,那么非ASCII字符(例如汉字、拼音、希腊文和箭 头) 会被当成EUC-JP编码 (p...原创 2019-04-03 16:50:55 · 1285 阅读 · 1 评论 -
PHP5与7的zval变化
摘抄:https://0x1.im/blog/php/Internal-value-representation-in-PHP-7-part-1.html思考及总结: php5因为引入了refcount_gc,is_ref_gc及优化,使得之前的zval的字节从24暴涨到48字节。 php7针对zval做了优化处理,保留了value字段,类型更加丰富,但复杂的数据类型...原创 2019-04-21 16:31:53 · 919 阅读 · 1 评论 -
【php7底层设计与源码实现】摘抄、总结、感想--持续更新
第2章 php整体框架 1、php内部的执行流程 首先 语法分析BNF把php代码切割成Token,在cli的模式下可以通过php -r 'print_r(token_get_all("<?php echo 111;"))' 来查看切割的token 其次 PHP通过语法分析器Bison将Token和符合文法规则的代码生成抽象树AST 最...原创 2019-04-20 11:06:27 · 1119 阅读 · 0 评论 -
php.ini优化顺口溜
php.ini优化顺口溜【3关5设1打开】3关:关闭全局变量、关闭错误显示、关闭一些危险的函数5设:设置最长的超时时间,设置每个脚本的执行内存使用,设置上传大小,设置session的存放路径,设置错误级别1打开:打开错误日志开关...原创 2019-05-08 16:52:57 · 124 阅读 · 0 评论 -
php命名空间
昨天在单位研究pthreads时,需要在框架里进行集成Thread,发现yaf一直报错,后来跟同事一起排查问题,竟然是因为定义了namespace导致的。 一直以来知道命名空间,但没怎么注意过,今天把命名空间进行总结下。1什么是命名空间 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它原创 2016-09-25 09:58:49 · 354 阅读 · 0 评论 -
php的trait使用
从php5.4开始,为了解决单继承的问题,除了通过implments来实现多接口外,官方提供了一个trait来解决该问题。<?php//示例trait Dog{ public $name = "dog"; public function run(){ echo "This is $this->name run\r\n"; } ...原创 2019-05-06 18:43:23 · 328 阅读 · 0 评论 -
猴子选大王php版本
//11只猴子//思路 没有叫到的删除掉原来的位置,加到后面//原理:循环链表$monkeys = [1,2,3,4,5,6,7,8,9,10];$king = chooseMonkeyKing($monkeys,3);//求交集取出来原始位置$king_pos = array_intersect($monkeys, $king);echo '<pre>';prin...原创 2019-05-19 13:53:33 · 582 阅读 · 0 评论 -
php-fpm中master与worker工作方式及关系
从事php开发以来,一直在理论上认为nginx的请求过来给了php-fpm,而php-fpm把请求给了master进程,master进行分配给worker,任务处理完成后,再由原路返回。但今天仔细想了下,如果这样的话,根本就不需要有master进程了。直接php-fpm分配给worker就好了。证实如下:步骤一、设置php-fpm.conf,把pm设置为静态,worker个数为1...原创 2019-05-20 14:29:46 · 3203 阅读 · 0 评论 -
composer的原理总结
composer原理理解加载的三阶段: 1、require或者include 2、__autoload 3、spl_autoload_register,支持回调原理,执行composer install 的时候读取 composer.json里的配置。先去镜像网站上拉取,如果没有直接去github上...原创 2019-05-16 09:38:13 · 2663 阅读 · 0 评论 -
wamp2.4下支持php7的安装
可以参考的文章:https://blog.csdn.net/waterlily_5/article/details/80375816步骤一、从wamp自带的php目录中拷贝出来一份wampserver.conf把里面内从改成<?php$phpConf['phpIniDir'] = '.';$phpConf['phpExeDir'] = '.';$phpConf['php...原创 2019-05-16 20:55:02 · 575 阅读 · 0 评论 -
composer不识别php最新版本问题
因工作需要给wamp装了多个php版本,结果发现使用compser时,获取的依然是之前的php版本,后来思考了下,应该是环境变量的问题。具体修改如下:步骤一 我的电脑->属性->高级系统设置->环境变量->系统变量,找出来PAHT,把php对应的bin路径改成最新的,确定即可。步骤二 需要重新通过cmd或者git的...原创 2019-05-18 17:42:15 · 1256 阅读 · 0 评论 -
判断前端多文件上传的数量
var fileCount = filesObj.files.length;if (window.File && window.FileList ){ alert("附件超过"+num+"个,请重新上传"); return false; } ...原创 2019-06-04 19:34:52 · 1982 阅读 · 1 评论 -
php之bitmap研究
在研究之前,建议先看看php手册的位运算。参考:http://www.cnblogs.com/iLoveMyD/p/4167623.htmlbitmap主要用于统计在线人数、黑名单等功能。<?php class bitMap{ //bit位运算 public function setBit($val) { //从0开始填充50个0,如...原创 2019-04-10 14:31:56 · 1428 阅读 · 0 评论 -
记一次nginx频繁报502的问题排查
在服务器所需应用(LNMP)全部安装完毕后,在执行脚本时,发现总是在执行了30秒之后,会报recv() failed (104: Connection reset by peer) while reading response header from upstream错误,刚开始以为是nginx的存活时间超时,改了之后依然不起作用,于是再次搜索,发现有人说是php-fpm配置的原因,原来是因为ph...原创 2019-03-27 16:42:10 · 5517 阅读 · 1 评论 -
tcp那些事-摘抄
转自:https://coolshell.cn/articles/11609.htmlTcp那些事: 1、TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口 2、滑动窗口 3、为什么3次握手 对于建链接的3次握手,主要是要初始化序列号(Sequence Number) 的初始值。通信的双方要互相通知对方自己的初始化的Sequence N...转载 2019-03-02 20:55:43 · 110 阅读 · 0 评论 -
php连接zookeeper 报Uncaught exception 'ZookeeperNoNodeException' with message 'no node'
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-07-05 17:37:01 · 840 阅读 · 0 评论 -
zookeeper的安装及php使用zookeeper
zookeeper安装:1 、下载zookeeper包 案例使用的是3.3.62、解压,tar zxvf zookeeper-3.3.6.tar.gz 3、改配置mv zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo.cfg4、启动./zookeeper/bin/zkServer.sh start5、查看是否原创 2017-07-05 20:17:21 · 3104 阅读 · 0 评论 -
swoole使用tcp的时候粘包问题
在使用swoole的时候发现,有时候连续发两条,服务端接收到的就是把两条粘在一起,具体请访问http://www.maxincai.com/post/swoole-study-notes/#使用自定义协议粘包原创 2017-07-19 16:38:01 · 3298 阅读 · 1 评论 -
抛弃php-fpm,nginx +swoole 配置http服务器
首先是要配置nginx#user nobody;worker_processes 4;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events {wor原创 2017-07-26 19:11:39 · 10365 阅读 · 0 评论 -
php5和php7字符串结构变化
php5字符串的实现是直接嵌入到zval中,在i386:x86-64下是是24个字节,而php7中,字符串是单独一个结构体zend_string,其大小为32字节(8位后对齐)原创 2018-11-07 16:08:40 · 295 阅读 · 0 评论 -
nginx php7 mysql 手工部署(一)
笔者使用centos6.8版本准备工作:更新yum源安装gc、gc++等必要扩展 yum -y install gcc gcc-c++ autoconf automake libtool make cmake yum -y install zlib zlib-devel openssl openssl-devel pcre-devel (1)安装nginx从http:/...原创 2018-11-07 17:49:58 · 115 阅读 · 0 评论 -
inotify异步文件实时监控
转自:https://my.oschina.net/matyhtf/blog/343508,感谢作者。inotify扩展介绍inotify是Linux内核提供的一组系统调用,它可以监控文件系统操作,比如文件或者目录的创建、读取、写入、权限修改和删除等。inotify使用也很简单,使用inotify_init创建一个句柄,然后通过inotify_add_watch/inotify_rm_...转载 2018-11-05 09:56:13 · 482 阅读 · 0 评论 -
nginx php7 mysql 手工部署(二)mysql安装
1 环境配置wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xztar -xJf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xzmv mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz /...原创 2018-11-08 14:49:27 · 121 阅读 · 0 评论 -
inotify,实时监控文件变化
inotify,PHP的一个扩展,用于监控文件变化<?php $fd = inotify_init(); $file = "/www/web/gateway/servers/LoanServer.php"; $watch_descriptor = inotify_add_watch($fd,$file,IN_MODIFY); while(true) ...原创 2018-11-29 19:22:48 · 992 阅读 · 0 评论 -
centos下composer两种安装办法
1、下载composer.phar文件curl -sS https://getcomposer.org/installer | php将composer.phar移动到环境变量中并且更名为composermv composer.phar /usr/local/bin/composer使用国内镜像composer config -g repo.packagist co...转载 2018-11-30 10:36:27 · 10228 阅读 · 0 评论 -
php中接口和抽象类的区别
转:https://www.cnblogs.com/caihuafeng/p/5484220.html抽象类与接口的区别在学习PHP面向对象时,都会在抽象类与接口上迷惑,作用差不多为什么还那么容易混淆,何不留一去一?但是事实上两者的区别还是很大的,如果能够很好地运用PHP的两个方法,面向对象的程序设计将会更加合理、清晰高效。a.接口是通过 interface 关键字来定义的, 抽象类是...转载 2018-11-28 20:12:28 · 1681 阅读 · 0 评论 -
centos下安装composer
1、创建目录2、对应下载到该目录,命令:curl -sS https://getcomposer.org/installer | php3、移动phpr mv composer.phar /usr/local/bin/composer 4、echo "export PATH=$PATH:/usr/local/bin" >> /etc/bashrc 5、 sou...原创 2018-11-28 20:17:50 · 395 阅读 · 0 评论 -
查看php-fpm占用内存的利器
ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'原创 2018-12-11 10:46:38 · 565 阅读 · 0 评论 -
什么是php-fpm
php-fpm只是一个php-fastcgi的管理器,为php提供管理服务。(1)为什么会出现php-fpm fpm的出现全部因为php-fastcgi出现。为了很好的管理php-fastcgi而实现的一个程序(2)什么是php-fastcgi php-fastcgi 只是一个cgi程序,只会解析php请求,并且返回结果,不会管理(因此才出现的php-fpm)。(3)原创 2017-07-04 19:41:49 · 7974 阅读 · 0 评论