PHP5+引进$GLOBALS延迟初始化的概念_PHP教程

企鹅博客
企鹅博客
企鹅博客
25193
文章
0
评论
2020年10月12日13:28:19 评论 10 views 2030字阅读6分46秒

今天整理代码想使用$GLOBALS['_SERVER']来替代$_SERVER来访问相关的环境变量,总是会报“_SERVER undefined”错误。如下用例: 用例1: print_r($GLOBALS); 此时输出中并没有_SERVER相关信息: Array ( [GLOBALS] => Array *RECURSION* [_POST] => Array ( ) [_GET] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) ) 用例2: print_r($GLOBALS); print_r($_SERVER); 此时输出中含有_SERVER相关信息: Array ( [GLOBALS] => Array *RECURSION* [_POST] => Array ( ) [_GET] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [_SERVER] => Array ( ) ) 查了下PHP手册关于$GLOBALS描述,引用therandshow at gmail dot com的评论: therandshow at gmail dot com As of PHP 5.4 $GLOBALS is now initialized just-in-time. This means there now is an advantage to not use the $GLOBALS variable as you can avoid the overhead of initializing it. How much of an advantage that is I'm not sure, but I've never liked $GLOBALS much anyways. 追根数源,发现PHP5Changelog更新日志的描述: Unordered List ItemImproved Zend Engine, performance tweaks and optimizations Unordered List ItemChanged $GLOBALS into a JIT autoglobal, so it's initialized only if used. (this may affect opcode caches!)www.2cto.com 718 ; When enabled, the SERVER and ENV variables are created when they're first 719 ; used (Just In Time) instead of when the script starts. If these variables 720 ; are not used within a script, having this directive on will result in a 721 ; performance gain. The PHP directives register_globals, register_long_arrays, 722 ; and register_argc_argv must be disabled for this directive to have any affect. 723 ; http://php.net/auto-globals-jit 724 auto_globals_jit = On 终于弄明白了,PHP5+中在开启auto_globals_jit = On情况下,$_SERVER变量和$_ENV变量不会在脚本启动时就创建,而是会在第一次使用$SERVER和$ENV时才会创建。所以就会出现上述两个用例的情况。 备注: 实测结论: auto_globals_jit setting is also affecting $_REQUEST superglobal in 5.3 It is not explicitly stated in documentation. 至少5.3.13版本中开启auto_globals_jit = On情况下,$_REQUEST也只会在第一次使用时才会创建。

http://www.bkjia.com/PHPjc/477807.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/477807.html
TechArticle
今天整理代码想使用$GLOBALS[_SERVER]来替代$_SERVER来访问相关的环境变量,总是会报_SERVER undefined错误。如下用例: 用例1: ?php print_r($GLOBALS)...

  • 微信
  • 分享
  • 相关标签:PHP5+ 引进 GLOBALS 延迟 初始化 的 概念 今天 整理 代码 想 使用 GLOBALS SERVER 来
  • 本文原创发布php教程网 ,转载请注明出处,感谢您的尊重!
    • 上一篇:Yii Framework 开发教程多国语言示例_PHP教程
    • 下一篇:无限分类-总结_PHP教程

    相关文章

    相关视频

    • PHP如何安装和配置?
    • php 和 python 语法(部分)上的区别
    • PHP 随机数 C扩展随机数
    • PHP查询附近的人及其距离的实现方法_php技巧
    • PHP5+引进$GLOBALS延迟初始化的概念_P...
      继续阅读
      实现PHP中session和cookie数据传值功能 php教程

      实现PHP中session和cookie数据传值功能

      1.session 登录上一个页面以后,长时间没有操作,刷新页面以后需要重新登录。 特点:(1)session是存储在服务器;    (2)session每个人(登陆者)存一份;    (3)sess...
      php 输出文字到图片上(文字水印)的代码 php教程

      php 输出文字到图片上(文字水印)的代码

      分享一段php代码,可实现将文字写到图片上的功能,有需要的朋友参考下吧。 有时,我们需要将一些文字打在图片上,即所谓的文字水印。 本节分享的这段代码,借助php的图像函数,可以实现这样的功能。 如果文...
      匿名

      发表评论

      匿名网友 填写信息

      :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: