[英]Define PHP constant only once
我正在使用php.ini(在nginx上)存储PHP的数据库访问凭据,目的是从.php文件中获取此数据。
我想一次(仅)使用这些值设置全局常量,并使所有脚本均可访问它们。
我当前正在执行以下操作,该脚本是数据库接口脚本的require_once()。 它可以工作,但是在下一个请求或每当页面调用dbinterface脚本时,都必须再次定义常量,这可能是由于范围问题(据我所知)。
除了使用APC之外,还有其他方法可以只定义一次吗?
<?php
if( !configLoaded() )
loadConfig();
function loadConfig()
{
$vars = array("A","B","C");
foreach( $vars as $v )
define( $v, get_cfg_var( "ubaza.cfg.$v" ) );
}
function configLoaded() //returns false as soon as the caller script exits
{
return defined("A") && defined("B") && defined("C");
}
?>
您还可以在htaccess中设置一个变量,并在PHP中获取它
SetEnv YOURVAR value
并在PHP中获取它:
print $_SERVER["YOURVAR"];
但是,由于要使用php.ini中的值作为常量-不确定是否可以在php.ini中的htaccess中设置它们
每次运行脚本时都必须“重新”定义常量,因为完成脚本后,垃圾回收会对其进行清理。
如果需要确保每个脚本仅定义一次常量,则说明操作正确-当前方法完全可以接受。
但是,如果你想一次定义的常量,从此再也不用担心他们, 永远 -看看hidef。
它允许您将常量放入.ini文件中,因此在执行任何脚本之前已经定义了它们。 巧合的是,它也是使用常量的最快方法,尽管它需要更多的RAM。
在运行其他任何内容之前使用auto_prepend_file运行脚本怎么样?
http://ie1.php.net/manual/zh/ini.core.php#ini.auto-prepend-file
这样,您可以编写一次脚本,然后在设置脚本时将在运行时开始定义所有常量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.