美文网首页
PHP的require-once机制

PHP的require-once机制

作者: shoxvc2001 | 来源:发表于2021-05-27 10:40 被阅读0次

include_path定义的是一个全局的路径搜索范围

就象DOS下的path.在用include()时,它是从当前目录找起,如果当前目录 没有,才按照include_path设置的找。

你比如说我要包含一个/usr/web/hqywork/doc/1.php的文件
我的当前目录比如说是:/usr/web/hqywork
我可以用:include(‘/usr/web/hqywork/doc/1.php’);//用绝对路径
也可以用:include(‘doc/1.php’); //用相对路径。

PHP在遇到require(_once)/include(_once)的指令的时候, 首先会做如下的判断:

  1. 要包含的文件路径是绝对路径么?
  2. 如果是, 则直接包含, 并结束.
  3. 如果不是, 进入另外的逻辑(经过多次调用, 宏展开后进入_php_stream_fopen_with_path)寻找此文件.

接下来, 在_php_stream_fopen_with_path中, 会做如下判断

  1. 要包含的文件路径是相对路径么(形如./file, ../dir/file, 以下用”目录相对路径代替”)?
  2. 如果是, 则跳过include_path的作用逻辑, 直接解析相对路径(随后单独介绍).

否则会根据include_path,和当前执行文件的path组成一个待选的目录列表

然后, 依次从待选列表头部开始, 根据DEFAULT_DIR_SEPARATOR(本文的环境是”:”)取出待选列表中的一个路径, 然后把要包含的文件名附加在这个路径后面, 进行尝试. 如果成功包含, 则返回, 否则继续下一个待选路径.

因为使用include_path和相对路径的情况下, 性能会和寻找的次数有关, 最坏的情况下, 如果你有10个include_path, 那么最多可能会重试11次才能找到要包含的文件,

http://www.voidcn.com/article/p-yqihbiui-oa.html

相关文章

  • PHP的require-once机制

    include_path定义的是一个全局的路径搜索范围 就象DOS下的path.在用include()时,它是从当...

  • 彻底理解PHP的SESSION机制

    原文地址: 彻底理解PHP的SESSION机制一、默认机制,用磁盘文件来实现PHP会话。php.ini配置:ses...

  • PHP基础知识

    PHP的垃圾回收机制(GC机制) 官方说明 http://docs.php.net/manual/zh/featu...

  • PHP Reflection 反射

    反射 ReflectionClass 类 PHP反射机制 反射在 PHP 中的应用

  • PHP7垃圾回收机制

    前面一篇文章我们聊了下PHP5的垃圾回收机制,本篇文章再来聊下PHP7的垃圾回收机制。PHP7的速度比PHP5快了...

  • PHP的面试总结

    PHP的垃圾回收机制是什么? php5和php7的垃圾回收机制都是利用引用计数。 在zval结构体中定义了ref_...

  • PHP相关

    一、 原理、流程相关 Nginx解析PHP过程 PHP执行过程 PHP垃圾回收机制 深入理解PHP Opcode缓...

  • 基于php swoole扩展写的超简单聊天室

    实例图: 服务端 Websocket.php 启动:php websocket.php重启机制:先杀死进程,再重新...

  • PHP的session机制

    PHP机制使用session 开启session --- session_start()...

  • php.ini配置文件

    文章来自于:php.ini配置文件 开启php安全模式 php安全模式是个非常重要的php内嵌的安全机制,能够控制...

网友评论

      本文标题:PHP的require-once机制

      本文链接:https://www.haomeiwen.com/subject/sqivkltx.html