伙计们,如果我需要一个 php 脚本中的文件,并且它是一个有效文件,那么这个文件是否会只包含一次,无论用户访问该脚本多少次,还是只包含每次访问,但这似乎是一种资源浪费?顺便说一句,如果这很重要,我使用 apache2 作为服务器。而且,既然有require_once,为什么还要存在require呢?由于 require_once 已经完成了 require 的工作并且不会被重新包含。这是否有充分的理由,我的意思是在什么情况下需要比 require_once 更好?
2 回答
为了更好地理解,请阅读这些
require_once 语句与 require 相同,只是 PHP 会检查文件是否已被包含,如果是,则不再包含(要求)它。
http://php.net/manual/en/function.require-once.php
Require 与 include 相同,但失败时也会产生致命的 E_COMPILE_ERROR 级别错误。换句话说,它将停止脚本,而 include 只发出一个警告(E_WARNING),允许脚本继续。
简短的回答:将 PHP 脚本视为一个程序。每次用户访问它时都会运行您的脚本,并且每次都会加载任何包含或需要(ed)的文件。
因此,如果 100 个用户同时访问您的 PHP 页面并且该页面需要另一个脚本,那么这个另一个脚本将被加载 100 次(很可能来自磁盘缓存,所以还不错)。
至于require和require_once的区别,RTM。短版:require_once 将确保特定文件在脚本的生命周期内只被 require(d) 一次(这对于防止包含循环最有用),而 require 将允许您在以下位置包含相同的代码片段脚本中的多个位置(例如,在页面顶部和底部添加相同的广告横幅)。
有缓存机制(如memcached)可以帮助减少资源的浪费(但不是以您对问题的期望的方式)。