How do I save data in an application scope in PHP?
2018 Edit: Time has not been kind to APC, especially since PHP 7 includes bundled support for Zend Optimizer+, which does largely the same thing (except the key-store). These days, the key store aspect has been forked over into the APCu project.
However, in 2018, the preferred key-store of choice is Redis. See the ext-redis project for details.
PHP has an application scope of sorts. it's called APC (Alternative PHP Cache).
Data should be cached in APC if it meets the following criteria:
- It is not user session-specific (if so, put in $_SESSION[])
- It is not really long-term (if so, use the file system)
- It is only needed on one PHP server (if not, consider using memcached)
- You want it available to every page of your site, instantly, even other (non-associated) PHP programs.
- You do not mind that all the data stored in it is lost on Apache reload/restart.
- You want data access far faster than file-based, memcached, or (esp.) database-based.
APC is installed on a great many hosts already, but follow the aforementioned guide to get installed on your box. Then you do something like this:
if (apc_exists('app:app_level_data') !== false){ $data = apc_fetch('app:app_level_data');}else{ $data = getFromDB('foo'); apc_store('app:app_level_data', $data);}