如何读取大XML数据并在PHP中缓存它

I am doing a PHP app and I need to read several xml files containing text and I want show it to the user. This is working without any problems.

The information stored in those files could be cached for a long time as it does not change too often. However, those files tend to be kind of heavy so it could be a bad idea to load them at every request. i'm trying to find a way to load the data in a lazy way maybe by using a singleton and store them somewhere. Si, I still have the following questions:

  • where to store de data? as session parameters?
  • how to do the lazy loading? using singleton? is that even a good idea in php?

Thanks a lot

Do not use session parameters. These are typically stored in a text file which is parsed every time you call session_start(). You should avoid storing anything more than a few bytes there.

Use an external cache system instead. The APC extension offers a simple in-memory user cache, or otherwise you can use Memcached for a cache system that can be shared between many php servers.

Lazy loading is not difficult:

...
private static $my_cached_object = null;
public static function GetMyObject() {
   if (null === self::$my_cached_object) {

      self::$my_cached_object = load_my_object();

   }
   return self::$my_cached_object;
}
...