1.进程,线程及通信方式 https://www.php.cn/php-ask-453612.html 进程和线程有点主从关系一样的,线程共享进程的资源 进程间通信方式:
1. 管道
2. 信号
3. 消息队列 Posix 消息队列
4. 共享内存
5. 套接口
2.Php 查看扩展路径
php -i | grep -i extension_dir
或者 phpinfo 来看一下
或者 echo ini_get('extension_dir');
3. Php 底层数组实现方式 linked list + hashtable 双向链表是中间映射表,用来存放索引和具体存储位置,然后 具体存储位置对应的具体值在 hashtable 中
4.写时复制: 如果两个变量是相同的值,则共享同一块内存,而那块内存的 is_ref =1 refcount = 1 后者被引用一次 +1,为 0 的时候被销毁,相当于资源延迟分配。 垃圾回收: 不会立即回收,会放入缓冲区(一个双向链表),然后默认到了 10000 个开始回收,先 将 refcount -1 , =0 则进行回收
5.解决内存溢出:
1、要增加PHP可用内存大小 2、对数组进行分批处理,将用过的变量及时销毁; 3、尽可能减少静态变量的使用; 4、数据库操作完成后,要马上关闭连接。 5、可以使用 memory_get_usage () 函数,获取当前占用内存 根据当前使用的内存来 调整程序 引申:
6.Php7 新特性
https://www.php.net/manual/zh/migration70.new-features.php
简要总结就是:
标量类型声明、返回值类型声明、通过 define() 定义常量数组、匿名类、相同命名空间 类一次性导入
7.Php7 底层优化:
8.Php 排序二维数组 array_multisort + array_column 就行
<?php
$user_list = [
['name' => '张三', 'age' => 28],
['name' => '赵六', 'age' => 21],
['name' => '王五', 'age' => 20],
['name' => '李四', 'age' => 21]
];
array_multisort(array_column($user_list, 'age'),SORT_ASC,$user_list);
var_dump($user_list);
9.缓存的应用场景:
10.Php 异步执行脚本:
11.常见状态码
一二三四五原则:(即一:消息系列;二:成功系列; 三:重定向系列;四:请求错误系 列;五:服务器端错误系列。 301 状态码是永久移动 302 是临时移动
304 如果请求头中带有 If-None-Match 或 If-Modified-Since,则会到源服务器进行有效性校验,如果源服务器资源没有变化,则会返回304,同时不返回内容;如果有变 化,则返回200;
500 代码 文件权限 资源有问题 501 请求方法服务器不支持
502 网关错误,例如得到了一个无效响应一类的就会出现这种错误 503 超载或者维护模式 504 网关超时,即在指定时间内没有正确的响应 499 客户端关闭请求,例如客户端请求 1s 内结束,php 未返回结果,或者找不到要请 求的地址,会返回 499 错误