NYCPHP Meetup

NYPHP.org

[nycphp-talk] Framework Question - Site Configuration

Alan T. Miller amiller at hollywood101.com
Tue Dec 9 16:17:25 EST 2003


Framework question.

I had an idea that if I were to store many of the web site configuration
values in the web server environment, such as database connection
parameters, default email address, company address and major site links in
each apache server virtual host environment, this information would be
resident in the server memory, and subsequent requests would require less
over head than creating a large configuration file that would be loaded and
parsed at runtime each time a script on our site ran.

For example. In my apache config I set the values in the following manner...

setEnv    DATABASE_NAME    = "somedatabase"
setEnv    DATABASE_USER    = "someuser"
setEnv    DATABASE_PASS    = "somepass"
setEnv    LINK_HOME_PAGE = "/index.php"
setEnv    LINK_SITE_MAP = "/site-map.php"
setEnv    EMAIL_DEFAULT = "info at foo.com"
setEnv    EMAIL_SALES = "sales at foo.com"
setEnv    PATH_PHOTOS = "/photos/"
setEnv    PATH_GIFS = "/gifs/"

To access these from my scripts, I can use the following...

$_SERVER['DATABASE_NAME']
$_SERVER['DATABASE_USER']
$_SERVER['DATABASE_PASS]
$_SERVER['LINK_HOME_PAGE']
$_SERVER['LINK_SITE_MAP]

Because they are resident in the memory of the server, the server does not
have to parse the file each time a request is made for the virtual host.

However, this is proving to be a pain because there are other scripts that
run from CRON etc, that do not run from the virtual host environment, and
for those scripts, I have ended up duplicating my efforts by creating
another configuration file for our site. This means I have to update changes
to the configuration twice.

I was thinking that it would may be easier to ditch this effort and go with
a standard configuration file in PHP that I can include for the site and
scripts that run outsode the virtual environment. Perhaps something like the
following...

<?php

define(DATABASE_NAME,'somedatabase');
define(DATABASE_USER,'someuser');
define(LINK_SITE_MAP,'/site-map.php');

?>

and then access the values in the script using their constant values or
perhaps store the values in an array such as...

<?php

$site = array(
'DATABASE_NAME' => 'somedatabase',
'DATABASE_USER' => 'someuser',
'LINK_SITE_MAP' => '/site_map.php'
);

?>

I would like to hear all your thoughts on this issue. I have about 100
configuration directives I would like to be able to store in one place. I
would be curious how others have dealt with simular issues. Are there
advantagaes to using an array for config values as mentioned above over lets
say defining constants?

Ideas, suggestions?

Thanks.





More information about the talk mailing list