| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 【php】基础知识 -> 正文阅读 |
|
[PHP知识库]【php】基础知识 |
1.php的垃圾回收机制在创建一个php变量并赋值时,就会生成一个zval变量容器,例如$a?=?"abc";就生成了一个类型为string、值为abc的变量容器,并定义其被引用为is_ref=false,变量被使用次数refcount=1,把这个变量值赋给其他变量,它的引用次数就会增加,当它的某个引用生命周期结束,或者被unset()了,引用次数就-1,变量容器在?refcount = 0?时就被销毁。
只有&引用才会使refcount、is_ref改变的,普通的赋值不会改变$a的refcount、is_ref,&引用是把$a的内存地址复制给了$c,$c='a'后,$a也是='a'的。 为了解决循环引用内存泄露问题 , 使用同步周期回收算法,比如当数组或对象循环的引用自身 , unset掉数组的时候 , 当refcount-1后还大于0的 , 就会被当成疑似垃圾 , 会进行遍历 ,并且模拟的删除一次refcount-1如果是0就删除 ,如果不是0就恢复 2.PHP中定义常量的几种方式与区别?使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。 (1).const用于类成员变量的定义,一经定义,不可修改。define不可用于类成员变量的定义,可用于全局常量。 (2).const可在类中使用,define不能。 (3).const不能在条件语句中定义常量。 (4).const采用一个普通的常量名称,define可以采用表达式作为名称。? (5).const只能接受静态的标量,而define可以采用任何表达式。 (6).const定义的常量时大小写敏感的,而define可通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。 3.php与nginx通信方式有哪些IP+端口号(tcp socket):支持跨机器访问 unix socket:Socket 在 Linux 中以文件形式存在,由于不需要建立额外的网络请求,所以效率更高,但是由于是本地文件,所以不能跨机器访问。 4.函数和语句的区别函数要被zend引擎解析为语言结构,因为多了一步所以往往没有语句快。 5.include和require的区别是什么?require在编译时引用,当引用出错,会提示错误并且会终止程序执行 6.composercomposer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖; composer.json与composer.lock区别当执行composer时,如果有composer.lock 文件,需要安装.lock中指定的版本,阻止自动获取最新版本的依赖项(这样可以保证在各个时期获取的依赖版本一致,避免更新后以前代码不可用或冲突),如果没有就从composer.json 安装最新扩展包和依赖,lock强调了对版本的锁定 二者都是json格式,composer.json指定了当前包的名称、描述、依赖、自动加载等信息,composer.json主要指定了要使用的包的版本等信息。 composer安装的文件夹路径:根目录的vender下 composer安装后的依赖如何调用:项目中include "vendor/autoload.php" 7.php的生命周期模块初始化阶段(Module init):即调用每个拓展源码中的的PHP_MINIT_FUNCTION中的方法初始化模块,进行一些模块所需变量的申请,内存分配等。 请求初始化阶段(Request init):即接受到客户端的请求后调用每个拓展的PHP_RINIT_FUNCTION中的方法,初始化PHP脚本的执行环境。 执行该PHP脚本。 请求结束(Request Shutdown):这时候调用每个拓展的PHP_RSHUTDOWN_FUNCTION方法清理请求现场,并且ZE开始回收变量和内存 关闭模块(Module shutdown):Web服务器退出或者命令行脚本执行完毕退出会调用拓展源码中的PHP_MSHUTDOWN_FUNCTION 方法 8.for foreach区别都用来遍历,for自定义指针可以遍历任何数据,foreach只能遍历数组或者对象,是按照其内部的指针去循环的。 9.http常用错误码及其含义301 永久重定向 302 暂时重定向 401身份认证失败 403资源不可用,通常因为服务端文件权限问题 500 服务端故障,通常是执行代码故障,应检查php代码、php、nginx错误日志,也有可能是文件资源描述符限制进程不能打开过多文件,需要修改限制 502 504 服务端故障,通常是nginx故障,无法处理过多的用户请求,php-fpm不足等,需要查看php、nginx错误日志,适当增大并发支持或限流,也需要考虑是否被攻击服务器。 参考: https://www.runoob.com/http/http-status-codes.html https://cloud.tencent.com/developer/article/1377959 10.$a = 0123,echo $a;输出83? 因为开头的0代表八进制。与之相似,0x123 开头的0x代表16进制,输出291。 但是intval('0123')=123 intval('0x123')=0 是的,不是纯数字的字符串就是转为0,它不把0 0x做为进制标示来识别 11 define? constdefine('A',123); const A = 'dog'; define、const都是定义常量,常量是不能被更改的,在第二次定义时还会报错Warning,但是不影响运行。 常量不用加$符号 在php中定义常量时,const和define的区别? 答:使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。 1、const用于类成员变量的定义,一经定义,不可修改。Define不可以用于类成员变量的定义,可用于全局常量。 2、Const可在类中使用,define不能 3、Const不能在条件语句中定义常量 12.PHP的基本变量类型四种标量类型:boolean (布尔型)、integer (整型)、float (浮点型, 也称作 double)、string (字符串) 两种复合类型:array (数组)、object (对象) 最后是两种特殊类型:resource(资源)、NULL(NULL) 13.秒杀简单流程 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 9:57:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |