Beispiel #1
0
 public function _interpret_($info, $params)
 {
     $cache = $info["cache"];
     $perform = true;
     $md5key = null;
     if ($cache) {
         $this->responseCache = new RxCache('responseCache');
         $this->headerCache = new RxCache('headerCache');
         $this->cacheDuration = 300;
         // in seconds
         // Client is told to cache these results for set duration
         header('Cache-Control: public,max-age=' . $this->cacheDuration . ',must-revalidate');
         header('Expires: ' . gmdate('D, d M Y H:i:s', $_SERVER['REQUEST_TIME'] + $this->cacheDuration) . ' GMT');
         header('Last-modified: ' . gmdate('D, d M Y H:i:s', $_SERVER['REQUEST_TIME']) . ' GMT');
         // Pragma header removed should the server happen to set it automatically
         // Pragma headers can make browser misbehave and still ask data from server
         header_remove('Pragma');
         $md5key = md5($_SERVER[REQUEST_URI]);
         $response = $this->responseCache->get($md5key, FALSE);
         if (!empty($response)) {
             $perform = false;
             echo $response;
             $headerstr = $this->headerCache->get($md5key);
             $headers = explode(self::$HEADER_GLUE, $headerstr);
             foreach ($headers as $header) {
                 header($header);
             }
             Browser::header("fromCahce");
             exit;
         } else {
             // ob_start('ob_gzhandler');
         }
     }
     if ($perform) {
         $this->_interceptor_($info, call_method_by_object($this, $info["method"], $params, $info["requestParams"]));
     }
     if ($perform && $cache) {
         $response = ob_get_contents();
         $this->responseCache->set($md5key, $response);
         $this->headerCache->set($md5key, implode(self::$HEADER_GLUE, headers_list()));
         // ob_end_flush();
         // echo $response;
     }
 }
Beispiel #2
0
 public static function read($glob_config, $file, $file2 = null)
 {
     $debug = isset($glob_config["RX_MODE_DEBUG"]) && $glob_config["RX_MODE_DEBUG"] == TRUE;
     $debug_build = isset($_REQUEST["RX_MODE_BUILD"]) && $_REQUEST["RX_MODE_BUILD"] == TRUE;
     self::$cache = new RxCache("config", true);
     $reloadCache = FALSE;
     header("FLAGS:" . self::$cache->isEmpty() . "-" . $glob_config["RX_MODE_DEBUG"] . "-" . $debug);
     if (self::$cache->isEmpty()) {
         $reloadCache = TRUE;
     } else {
         $_glob_config = self::$cache->get("GLOBAL");
         if ($_glob_config["RX_MODE_DEBUG"] != $debug || isset($_GET['ModPagespeed'])) {
             $reloadCache = TRUE;
         }
     }
     $RELOAD_VERSION = self::$cache->get("RELOAD_VERSION");
     if ($debug_build || $debug || $reloadCache) {
         FileUtil::build_check();
         define("FIRST_RELOAD", TRUE);
         $RELOAD_VERSION = microtime(true);
         RxCache::clean();
         self::$cache->set("RELOAD_VERSION", $RELOAD_VERSION);
         $DEFAULT_CONFIG = parse_ini_file("_project.properties", TRUE);
         $localConfig = array();
         if (file_exists($file)) {
             $localConfig = parse_ini_file($file, TRUE);
         }
         $localConfig = array_replace_recursive($DEFAULT_CONFIG, $localConfig);
         if ($file2 != null && file_exists($file2)) {
             $localConfig = array_replace_recursive($localConfig, parse_ini_file($file2, TRUE));
         }
         self::$cache->merge($localConfig);
         self::$cache->set('GLOBAL', array_merge($DEFAULT_CONFIG['GLOBAL'], $localConfig['GLOBAL'], $glob_config));
         $reloadMode = isset($_GET['ModPagespeed']) ? $_GET['ModPagespeed'] : NULL;
         call_user_func(rx_function("rx_reload_cache"), $reloadMode);
         self::$cache->save();
         Browser::header("RX_MODE_BUILD");
     } else {
         define("FIRST_RELOAD", FALSE);
     }
     define("RELOAD_VERSION", $RELOAD_VERSION);
     return self::$cache->getArray();
 }
Beispiel #3
0
 public function invokeHandler()
 {
     //VARIABLES TO DETERMINE RESOURCES
     //RELOAD_VERSION
     //RX_ENCRYPT_PATH
     //$const = Config::getSection("CLIENT_CONST");
     //$const['RX_JS_MIN']
     //$const['RX_JS_MERGE']
     $hdr = new Header();
     $cache_ext = '.js';
     //file extension
     $cache_time = 3600;
     //Cache file expires afere these seconds (1 hour = 3600 sec)
     $cache_folder = Header::$BUILD_PATH;
     //folder to store Cache files
     //$ignore_pages   = array('', '');
     $dynamic_url = $_GET['@'];
     //$_SERVER['QUERY_STRING']; // requested dynamic page (full url)
     $version = $_GET['_'];
     //echo "Q==".$_SERVER['QUERY_STRING'];
     $cache_file = $cache_folder . md5($dynamic_url) . "-" . $version . $cache_ext;
     // construct a cache file
     $ignore = false;
     //(in_array($dynamic_url,$ignore_pages))?true:false; //check if url is in ignore list
     Browser::header("RX_MODE_DEBUG" . RX_MODE_DEBUG);
     if (!RX_MODE_DEBUG) {
         //if (!$ignore && file_exists($cache_file) && time() - $cache_time < filemtime($cache_file)) { //check Cache exist and it's not expired.
         if (!$ignore && file_exists($cache_file)) {
             //check Cache exist and it's not expired.
             ob_start('ob_gzhandler');
             //Turn on output buffering, "ob_gzhandler" for the compressed page with gzip.
             echo '/** cached page - ' . date('l jS \\of F Y h:i:s A', filemtime($cache_file)) . ',';
             echo "\n * Page : " . $dynamic_url . "\n * NewMD5" . $cache_file . "\n */\n";
             $this->displayResourceFile($cache_file);
             //read Cache file
             $this->writeHeaders($cache_file);
             //$this->redirectFile($cache_file);
             ob_end_flush();
             //Flush and turn off output buffering
             exit;
             //no need to proceed further, exit the flow.
         }
     }
     //Turn on output buffering with gzip compression.
     ob_start('ob_gzhandler');
     $files = explode(",", $_GET['@']);
     $hdr->printCombinedJs($files);
     if (!is_dir($cache_folder)) {
         //create a new folder if we need to
         mkdir($cache_folder);
     }
     if (!$ignore) {
         $fp = fopen($cache_file, 'w');
         //open file for writing
         fwrite($fp, ob_get_contents());
         //write contents of the output buffer in Cache file
         fclose($fp);
         //Close file pointer
     }
     $this->writeHeaders($cache_file);
     //Browser::printlogsOnHeader();
     if (RX_MODE_DEBUG) {
         //unlink($cache_file);
         header("X-LOG-DELTED: TRUE");
     }
     ob_end_flush();
 }
Beispiel #4
0
 public static function invoke($_conf = array())
 {
     Browser::time("invoked");
     $global_config = array_merge(array('CONTROLLER' => 'web.php', 'DEFAULT_DB' => 'DB1', 'CONSOLE_FUN' => 'console.log', 'RX_MODE_DEBUG' => FALSE, 'PROJECT_ROOT_DIR' => "../"), $_conf);
     // Loads all the Constants
     define('PROJECT_ROOT_DIR', $global_config['PROJECT_ROOT_DIR']);
     define('PROJECT_ID', md5(PROJECT_ROOT_DIR . $global_config['CONTROLLER']));
     FileUtil::$PROJECT_ROOT_DIR = PROJECT_ROOT_DIR;
     include_once 'constants.php';
     ob_start();
     session_start();
     Config::load(PROJECT_ROOT_DIR . "app/meta/project.properties", PROJECT_ROOT_DIR . "config/project.properties", $global_config);
     // Initialze Rudrax
     self::init();
     Browser::time("After Init");
     $config = Config::getSection("GLOBAL");
     $db_connect = false;
     Browser::time("Before DB Connect");
     /**
      * NOTE:- NO need to connect DB automatically, it should be connecte donly when required;
      */
     // if (isset ( $config ["DEFAULT_DB"] )) {
     // $RDb = self::getDB ( $config ["DEFAULT_DB"] );
     // $db_connect = true;
     // }
     Browser::time("Before-First Reload");
     // Define Custom Request Plugs
     if (FIRST_RELOAD) {
         ClassUtil::scan();
     }
     self::findAndExecuteController();
     self::invokeController();
     DBService::close();
     Browser::time("Before Saving");
     Config::save();
     Browser::time("After Saving");
     $clientConfig = Config::get("CLIENT_CONST");
     /*
      * $RX_ENCRYPT_PATH is applicable only if either MINFY or MERGE, this variable ise used by .htaccess file
      */
     $RX_ENCRYPT_PATH = !RX_MODE_DEBUG && ($clientConfig["RX_JS_MIN"] || $clientConfig["RX_JS_MERGE"]);
     Browser::header(RX_MODE_DEBUG . "." . $clientConfig["RX_JS_MIN"] . "." . $clientConfig["RX_JS_MERGE"]);
     if ($RX_ENCRYPT_PATH) {
         setcookie('RX-ENCRYPT-PATH', "TRUE", 0, "/");
         define("RX_ENCRYPT_PATH", true);
     } else {
         removecookie('RX-ENCRYPT-PATH');
         define("RX_ENCRYPT_PATH", false);
     }
     Browser::time("Invoked:Ends");
 }