static function getInstance($filename, $flags)
 {
     if (is_null(self::$gi)) {
         $gi = new AnattaDesign_AwesomeCheckout_Model_GeoIP_Core();
         $gi->flags = $flags;
         if ($gi->flags & self::GEOIP_SHARED_MEMORY) {
             $gi->shmid = @shmop_open(self::GEOIP_SHM_KEY, "a", 0, 0);
         } else {
             $gi->filehandle = fopen($filename, "rb");
             if (!$gi->filehandle) {
                 throw new Exception("Can not open {$filename}\n");
             }
             if ($gi->flags & self::GEOIP_MEMORY_CACHE) {
                 $s_array = fstat($gi->filehandle);
                 $gi->memory_buffer = fread($gi->filehandle, $s_array['size']);
             }
         }
         $gi = self::_setup_segments($gi);
         self::$gi = $gi;
     }
     return self::$gi;
 }