php基础知识

php基本概念:服务端脚本语言,底层是由c实现的

php语言的整体架构:

  • Application:php程序
  • SAPI:服务端应用编程接口(让php和外围交换数据[PHP通过mod_php5.so模块和Apache相连])
  • Extensions扩展(扩展库)
  • Zend引擎(将php翻译成一种叫opcode的中间语言){实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心}
  •   执行流程:
    1. 词法分析,将php代码转换成语言片段
    2. 语法分析,转化成有意义的表达式
    3. 将表达式编译成opcode
    4. 执行opcode

 

 

 

cgi、php-cgi、fastcgi、php-fpm关系:

  1. Web Server 一般指Apache、Nginx、IIS、Lighttpd、Tomcat等服务器,
  2. Web Application 一般指PHP、Java、Asp.net等应用程序。
  • CGI:是 Web Server 与 Web Application 之间数据交换的一种协议。
  • FastCGI:同 CGI,是一种通信协议,但比 CGI 在效率上做了一些优化。同样,SCGI 协议与 FastCGI 类似。
  • PHP-CGI:是 PHP (Web Application)对 Web Server 提供的 CGI 协议的接口程序。
  • PHP-FPM:是 PHP(Web Application)对 Web Server 提供的 FastCGI 协议的接口程序,额外还提供了相对智能一些任务管理。

swoole为什么可以加速

  swoole解决了重复加载文件的问题,还提供了其他功能(协程)

require和include的区别

  require:发出警告报错,后续程序不会执行

  include:发出警告,后续程序会执行

  include_once、require_once:不确定文件是否被加载的时候用

垃圾回收机制(释放的是堆内存,因为栈是内存地址)

  目的:是一种动态的储存分配方案

  申请流程:

  1. 每一个内存对象都会分配一个计数器
  2. 被引用+1,撤销unset后-1
  3. 当计算器值=0,对他进行摧毁

php的自动加载原理和实现分类

   spl_autoload_register:自定义的加载方法,可以加载多次(推荐使用)

   __autoload():系统提供,不能改,..只能加载一次

  有异曲同工之妙

composer加载php文件的原理

  namespace=》文件目录的映射

  1. 通过composer.json的autoload->psr4对地址进行映射绑定,记录在autoload_psr4文件,通过autoload_static记录命名空间的规则(长度记录)
  2. 在使用的时候,composer核心代码底层中通过spl_autoload_register加载不同组建的命名规则

 

posted @ 2020-04-02 16:18  花花妹子。  阅读(164)  评论(0编辑  收藏  举报