- PHP 的核心数据结构是什么?
HashTable
hashTable
- 为什么Linux要分为用户空间和内核空间?
1.安全 内核有些接口给用户空间用
运行php有个 调度的过程,用户空间-》调用内核空间,内核空间返回用户空间,会有两种状态切换
-
谈谈你队5种常用IO模型的理解?
1阻塞IO,
2.非阻塞IO
3.多路复用IO
4.信号驱动IO
5.异步IO
-
一次网络请求的完整过程?(重点)
1.用户输入url 浏览器缓存 (f12 network size (disk cache) 意思是访问的浏览器缓存)浏览器引擎
2.DNS服务器 解析URL 获取ip (f12 Remote Address: XX.XXX.XX.XX:端口号)
这个ip就是
DNS解析分4步
- 利用本地host文件解析
- 向本地DNS服务器请求解析
- 本地DNS服务器想根DNS服务器,域服务器等请求解析(有递归和迭代两种方式)
- 本地DNS服务器在请求完成后需要缓存url和ip的映射关系
(ps:浏览器其实也有dns解析缓存,比如google,访问的预上的地址,但是浏览器一直访问的线上的环境)
所以这里有个步骤,先到本地找,然后到浏览器找,之后到远程服务器找
3.TCP 或者SSL/TLS 握手 ssl和tls不懂点这里
tcp工作在第4层
4.发起http请求 http工作在第7层
5.反向代理->负载均衡 -》给某个服务器 php执行代码
6.返回响应报文
7.浏览器引擎渲染页面(以浏览器的格式转换,格式转化)
8.展示页面
(ps:
TCP/IP协议的层次划分:
TCP/IP协议并不完全符合OSI的七层参考模型,OSI(Open System Interconnect)是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。
这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层)。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
)
dns污染是啥呢?
一般是黑客钓鱼,电脑设置dns服务器,如果是自动设置的,可能到黑客那里,
(自己设置的8.8.8.8)
502 php-fpm错误 网关错误
504 过了nginx的超时时间
-
如何提高linux最大文件打开数?(一切都是文件)
查看方法 ulimit -a 或者 ulimit -t
ulimit详细用法
打开文件数是啥??不是打开文件,任何草书都是文件存在的,
ulimit -a 默认是1024 你要设置 65535并使它永久生效,必须修改配置文件 /etc/security/limits.conf 在配置文件中添加
* soft nofile 65535
* hard nofile 65535
运行下面两行代码
-
Nginx最大打开文件数
这个参数调很高,也要把ulimit 调整一下,要不没有作用。
在nginx.conf文件中设置
-
linux如何查看后台所有php进程?
ps -ef | grep php ps -ef 具体命令
-
同时将某个文件夹的属主改为oracle,数组改成dba
chown -R -oracle:dba test
文件的主人改成oracle 组是dba
文件夹是 test
-
给指定文件的属主和属组所有权限(读写执行)
chmod ug+rwx file.txt
-
查看系统负载?
uptime
-
查看内存使用情况
free -m
-
linux系统日志文件在哪?
/var/log/messages
-
用什么命令查看ip地址及接口信息?
-
用什么命令查看ip地址及接口信息?
ifconfig
-
查看所有环境变量
env
-
通过什么命令查找执行命令?
which
-
怎么对命令进行取别名?
alias la=‘ls-a’
-
如何杀掉进程?
kill命令用于终止进程
-9强迫进程立即停止
kill -9 [PID]
-
LINUX中如何查看某个端口被占用?
netstat -anp | grep 端口号
-
将/test1目录下的 file1复制到 /test3目录,并将文件名改为file2
cp /test1/file1 /test3/file2
文件夹加 -p
scp 是跨服务器
-
如何在linux下更改权限?
chomd +x test.txt
-
linux系统中用户有哪几种?
-
切换到一个目录里面需要哪些权限?
rx
-
nginx配置文件如何优化?【重点】
1.故障切换
2.健康监测
高可用:在规定时间返回内容就是高可用
负载均衡故障切换
这里用了轮训 max_fails=2最大失败连接次数2
fail_timeout=600s 超时时间10min
nginx 健康监测 配置
nginx_upstream_check_module 模块主动检查健康状态
check interval=3000 rise =2 fall=5 timeout=1000 type=http
意思是,对cluster这个负载均衡条目中的所有节点,每隔3秒检测一次,请求2次正常则标记 realserver状态为up,如果检测 5 次都失败,则标记 realserver的状态为down,超时时间为1秒。
type:健康检查包的类型,现在支持以下多种类型
- tcp:简单的tcp连接,如果连接成功,就说明后端正常。
- ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
- http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
- mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
- ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
- port: 指定后端服务器的检查端口。
- 请求分发的实现方式
- mongodb和redis 的区别?(重点)
mongodb存的是json字符串
- mongodb中分片是啥?
28. php的代码执行流程?
opcache opcache缓存
第一次编译的结果放到缓存,
第二次都不用编译了。直接去缓存取
最少提高一倍。
- php-fpm配置如何优化?
php-fpm不能设置过多,要设置合适
- php底层原理?
spl
php7操作monogodb
插入
更新数据
删除数据
读取数据