How do I save data in an application scope in PHP?

2019-02-08 15:59发布

问题:

I'm a Java and C# developer, and, I admit, I'm not that good in PHP.

I need to store an object in an application scope that lives as long as the app itself is running. I can't save it in the Session, because it expires, also I can't serialize it to disk.

Is there something like a C# Application object in PHP?

回答1:

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:

  1. It is not user session-specific (if so, put in $_SESSION[])
  2. It is not really long-term (if so, use the file system)
  3. It is only needed on one PHP server (if not, consider using memcached)
  4. You want it available to every page of your site, instantly, even other (non-associated) PHP programs.
  5. You do not mind that all the data stored in it is lost on Apache reload/restart.
  6. 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_get('app:app_level_data');
}
else
{
    $data = getFromDB('foo');
    apc_store('app:app_level_data', $data);
}


标签: php scope save