1. php fpm 是什么? fpm是fastcgi进程管理器处理web服务器的请求 。
优点 1.动态进程管理 根据负载自动调整进程数量,自动监控回收 2.资源利用高效,通过进程池的方式,避免频繁的创建和销毁进程。节约资源,灵活配置,动态 静态配置
2.cgi 和fastcgi 区别
cgi 和 fastcgi 都是web服务器和php进行通信的协议 fastcgi 是持久化的进程池 处理多个请求,不需要为每个请求单独创建新的进程,提高性能
3.对称加密 非对称加密
对称加密 使用密钥进行加密然后根据密钥解密 常用aes des 等 场景 微信支付 支付宝支付等 接口对接常用 ;安全性不高算法简单 安全就是密钥长度较长安全
非对称加密 公钥 和私钥 公钥公开 私钥自己保管 用于解密 常用的 RSA DSA 等 密钥基本是 .pem v3微信支付 ;安全高,计算慢,使用数字签名
4.封装 将属性或者方法写成类 通过接口等方式报漏出来使用 保证代码等安全性
继承 子类可以继承父类方法和属性 也可以重新方法和属性 提高代码复用性 一般控制器继承base控制
多态 不同的类的对象对同一消息做出不同的响应 ( 同一个方法不同类调用的时候 返回的数据不一样)
5.抽象类和接口的区别
抽象类abstrcat 定义关键字,包含抽象方法和工具方法,抽象方法没有实现,具体方法有实现 一个类只能继承一个抽象类
接口 interface 关键字定义 只包含方法签名 没有具体实现 主要通过多态实现
6.laravel 一些概念 依赖注入 控制反转
依赖注入 是一种设计模式 ,类的依赖项从外部传递到类中 ,不是在类内创建这些依赖项,代码灵活,可测试可维护代码解耦 比如控制依赖注入一些server方法 可以直接使用
控制反转 是一种设计原则 将对象的控制权从调用者转移到一个容器或框架中,服务容器是实现控制反转的核心部分
7.laravel 队列的使用 queue 消息丢失以及消费失败
消息丢失 1.可以将消息持久化存在数据库中,jobs 存储任务数据,自动重试失败的任务 2.消息确认 消费成功会删除任务
消息失败 1.设置自动重试机制2.在代码添加异常处理代码,记录日志,3.使用死信队列,手动处理 4,监控工具 根据异常手动处理
8.php数组的一些使用方式
array_merge 合并数组 相同值会被覆盖
in_array 检查值是否在数组中 返回true
is_array 是否是数组类型
array_search 检查一个值是否在数组中 返回值
array_map 循环 处理值
sort 生序排列
rsort 降序
count 数组的长度
9.array_map 原理
使用回调函数 处理数组中的每个元素 并返回新的数组 for循环参数如何传入方法中
10.jwt
三部分 头部 令牌类型 和签名算法 中间是用户信息 生成时间过期时间 签名 头部的签名sign 有个密钥值 具体实现
就是用base64encode 头部json 和 用户信息 ,然后hash函数和sha256 加密获取sign 然后组合字符串
11.swoole框架 workman 的区别
workman 使用的php编写 socket服务器框架 非阻塞i/o 多进程网络框架,它采用多进程模型
swoole 异步网络通信引擎 是c编写的 i/o吞吐量比较高 内存消耗也比较wman小
12.php的执行过程
扫描内容找语言片段 解析代码变成表达式,然后表达式编辑中间码(opcode) 执行中间码 输出到缓存区
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。