찾다
php教程php手册PHP5+引进$GLOBALS延迟初始化的概念
PHP5+引进$GLOBALS延迟初始化的概念Jun 13, 2016 am 10:54 AM
server암호사용초기화지연정돈하다개념~의

今天整理代码想使用$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也只会在第一次使用时才会创建。

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Windows 无法初始化此硬件的设备驱动程序(代码 37)修复Windows 无法初始化此硬件的设备驱动程序(代码 37)修复Apr 14, 2023 pm 01:22 PM

当 Windows 检测到设备的驱动程序不兼容或损坏时,它无法对其进行初始化。设备停止工作,当用户调查时,“ Windows 无法为此硬件初始化设备驱动程序(代码 37) ”错误消息显示在“设备状态”窗格中。解决这个问题很容易,你可以很容易地做到这一点。修复 1 – 扫描计算机您可以扫描设备以查找任何硬件更改。Windows 最终将检查并检测任何驱动程序更改。1.您只需右键单击“ Windows键”并点击“设备管理器”。2. 当设备管理器出现在您的系统上时,单击菜单栏上的“操作”。3. 在这里,

如何在技嘉主板上设置键盘启动功能 (技嘉主板启用键盘开机方式)如何在技嘉主板上设置键盘启动功能 (技嘉主板启用键盘开机方式)Dec 31, 2023 pm 05:15 PM

技嘉的主板怎么设置键盘开机首先,要支持键盘开机,一定是PS2键盘!!设置步骤如下:第一步:开机按Del或者F2进入bios,到bios的Advanced(高级)模式普通主板默认进入主板的EZ(简易)模式,需要按F7切换到高级模式,ROG系列主板默认进入bios的高级模式(我们用简体中文来示范)第二步:选择到——【高级】——【高级电源管理(APM)】第三步:找到选项【由PS2键盘唤醒】第四步:这个选项默认是Disabled(关闭)的,下拉之后可以看到三种不同的设置选择,分别是按【空格键】开机、按组

CS玩家的首选:推荐的电脑配置CS玩家的首选:推荐的电脑配置Jan 02, 2024 pm 04:26 PM

1.处理器在选择电脑配置时,处理器是至关重要的组件之一。对于玩CS这样的游戏来说,处理器的性能直接影响游戏的流畅度和反应速度。推荐选择IntelCorei5或i7系列的处理器,因为它们具有强大的多核处理能力和高频率,可以轻松应对CS的高要求。2.显卡显卡是游戏性能的重要因素之一。对于射击游戏如CS而言,显卡的性能直接影响游戏画面的清晰度和流畅度。建议选择NVIDIAGeForceGTX系列或AMDRadeonRX系列的显卡,它们具备出色的图形处理能力和高帧率输出,能够提供更好的游戏体验3.内存电

修复: Windows 无法初始化此硬件的设备驱动程序修复: Windows 无法初始化此硬件的设备驱动程序Apr 13, 2023 pm 01:19 PM

错误代码 37 表示 Windows 检测到设备驱动程序存在问题,无法启动硬件设备。这意味着您的系统上未正确安装软件设备驱动程序,或者您尝试使用的硬件与 Windows 不兼容。您已经知道驱动程序对于设备的平稳运行至关重要,因此如果您要使用硬件设备,则需要立即解决此错误。在本文中,我们将向您展示绕过此错误的各种方法。是什么原因导致 Windows 错误代码 37?当您得到 Windows 无法初始化此硬件的设备驱动程序时。(代码 37) 消息,它可能由几个问题引起,包括:兼容性问题 – 当您将硬

动态链接库初始化例程失败什么办动态链接库初始化例程失败什么办Dec 29, 2023 am 10:30 AM

解决办法:1、重新安装应用程序;2、修复或重新安装DLL;3、系统还原或检查点恢复;4、使用系统文件检查器(SFC)扫描;5、检查启动项和服务;6、使用工具;7、查阅官方文档或论坛;8、考虑安全软件;9、查看事件查看器;10、寻求专家帮助等等。

win7怎么初始化电脑win7怎么初始化电脑Jan 07, 2024 am 11:53 AM

win7系统是一款非常优秀的高性能系统,在对win7的不断使用中有很多的朋友都在问win7怎么初始化电脑!今天小编为大家带来的就是win7电脑恢复出厂设置的操作方法。win7怎么初始化电脑的相关信息:图文详解操作步骤:1、打开“开始菜单”,然后进入。2、点击进入左侧底部的设置。3、在Win10更新和恢复设置的界面中,选择。4、点击“删除所有内容并重新安装Windows”下方的。5、可以看到如下“初始化”设置了,然后点击。6、进入“你的电脑有多个驱动器”设置选项,这里有和两个选项,可以根据情况选择

如何重置win7网络设置如何重置win7网络设置Dec 26, 2023 pm 06:51 PM

win7系统是一款非常优秀的高性能系统,最近一段时间里有很多win7系统的小伙伴们都在找win7怎么初始化网络设置的方法,今天小编为大家带来的就是win7电脑网络初始化的详细教程一起来看看吧。win7怎么初始化网络设置的详细教程:图文操作步骤:1、点“开始”菜单,找到并打开“控制面板”,进去之后再点“网络和共享中心”。2、然后找到并点开“更改适配器设备”。3、接下来,在打开的窗口中,鼠标右键点击“本地连接”,再点“属性”。4、打开之后,就找到“Internet协议版本(TCP/IPv4)”,再双

修复无法初始化PC上的图形系统错误修复无法初始化PC上的图形系统错误Mar 08, 2024 am 09:55 AM

许多游戏玩家遇到了游戏无法初始化图形系统的令人沮丧的问题。这篇文章将深入探讨这个问题背后的常见原因,并找到简单而有效的解决方案,让你重新回到棋盘上,并在任何时间内通过关卡。因此,如果你在过山车大亨、刺客信条、托尼·霍克的职业溜冰者等中收到无法初始化图形系统错误信息,请遵循本文中提到的解决方案。初始化错误无法初始化图形系统。不支持显卡。修复无法初始化图形系统错误信息要解决过山车大亨、刺客信条、托尼·霍克的专业溜冰者等游戏中的无法初始化图形系统错误,可以尝试执行以下解决方法:更新显卡驱动程序在兼容模

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구