分类 编程 下的文章

发现自己喜欢刨根问底,不弄明白不想吃饭睡觉~

安装php后,会发现bin目录下有php和php-cgi ,它俩其实本质是一样的都可以解析php脚本(PHP文件),php适用于cli模式,php-cgi用于网关模式,php-cgi支持cgi协议和fastcgi协议,php-cgi同样可以像php-fpm那样可以监听端口,nginx反向代理到这个端口。所以php-cgi是一个cgi或者fastcgi协议的解释器,也是一个php脚本解释器,是一个程序。php-fpm是一个php-cgi的升级版,也是一个程序,在早期它依赖php-cgi这个程序,应该是5.4以后它集成到php之中了,他不再依赖php-cgi,它自己是一个“fastcgi协议的解释器和php脚本解释器”的程序了。

看了很多,也总结了很多,都云里雾里,这篇写得很清晰!

作者:Willis
链接:https://www.zhihu.com/question/55835080/answer/749298981
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我在这里简单的说一下php-cgi与php-fpm的关系:
1、Linux下安装好php,会有“php”和“php-cgi”这两个可执行程序(在win下是php.exe和php-cgi.exe),这两个程序其实基本上是一样的,都是“php解释器”(就是php的核心),就是能把你写的php代码进行解释最后输出代码的结果。

- 阅读剩余部分 -

多路是指多个客户端连接socket,复用就是指复用少数几个进程,多路复用本身依然隶属于同步通信方式,只是表现出的结果看起来像异步,这点值得注意,目前多路复用有三种常用的方案,依次是:

select,最早的解决方案
poll,算是select的升级版
epoll,目前的最终解决版,解决c10k问题的功臣

文件扩展名是什么?
是操作系统用来标注文件格式的一种机制,用一个点号(.)和主文件名分隔开。
由于历史原因,多数扩展名是三个字母。注意,这里说的是标注,而非定义,既然是标注,说明不是强制的。
比如你用photoshop可以打开一个psd图像文件。把这个文件扩展名改为txt,再拖到photoshop窗口里,还是一样能打开,说明内容完全没有变化,变化的只是双击时的默认打开方式。

- 阅读剩余部分 -

优化你的sql和索引;加缓存,memcached,redis,或者开启mysql的查询缓存;开启读写分离;中间件分库分表等

下面记录一些sql语句的优化:
使用limit对查询结果的记录进行限定
避免select *,将需要查找的字段列出来
使用连接(join)来代替子查询
可通过开启慢查询日志来找出较慢的SQL
不做列运算:SELECT id WHERE age + 1 = 10,任何对列的操作都将导致表扫描,它包括数据库教程函数、计算表达式等等,查询时要尽可能将操作移至等号右边
sql语句尽可能简单:一条sql只能在一个cpu运算;大语句拆小语句,减少锁时间;一条大sql可以堵死整个库
OR改写成IN:OR的效率是n级别,IN的效率是log(n)级别,in的个数建议控制在200以内
不用函数和触发器,在应用程序实现
避免%xxx式查询
使用同类型进行比较,比如用'123'和'123'比,123和123比
尽量避免在WHERE子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
对于连续数值,使用BETWEEN不用IN:SELECT id FROM t WHERE num BETWEEN 1 AND 5
列表数据不要拿全表,要使用LIMIT来分页,每页数量也不要太大