/** * Checks if there is enough memory and time left on the Server. * * @return bool * Boolean to show if we have enough left. * TRUE = all is OK. * FALSE = we have a problem. */ public function checkEmergencyBreak() { if (!$this->enabled) { // Tell them, everything is OK! return true; } if (self::$allIsOk === false) { // This has failed before! // No need to check again! return false; } // Check Runtime. if ($this->timer + $this->maxRuntime <= time()) { // This is taking longer than expected. $this->storage->messages->addMessage('Emergency break due to extensive run time!'); \Krexx::editSettings(); \Krexx::disable(); self::$allIsOk = false; return false; } // Still here ? Commence with the memory check. // We will only check, if we were able to determine a memory limit // in the first place. if ($this->serverMemoryLimit > 2) { $usage = memory_get_usage(); $left = $this->serverMemoryLimit - $usage; // Is more left than is configured? if ($left < $this->minMemoryLeft * 1024 * 1024) { $this->storage->messages->addMessage('Emergency break due to extensive memory usage!'); // Show settings to give the dev to repair the situation. \Krexx::editSettings(); \Krexx::disable(); self::$allIsOk = false; return false; } } // Still here? Everything must be good :-) return true; }
/** * Includes all needed files and sets some internal values. */ public static function bootstrapKrexx() { $krexxDir = dirname(__FILE__) . DIRECTORY_SEPARATOR; include_once $krexxDir . 'src/service/view/Help.php'; include_once $krexxDir . 'src/service/view/Render.php'; include_once $krexxDir . 'src/service/view/Messages.php'; include_once $krexxDir . 'src/service/config/Model.php'; include_once $krexxDir . 'src/service/config/Fallback.php'; include_once $krexxDir . 'src/service/config/Security.php'; include_once $krexxDir . 'src/service/config/Config.php'; include_once $krexxDir . 'src/service/misc/Codegen.php'; include_once $krexxDir . 'src/service/misc/Chunks.php'; include_once $krexxDir . 'src/service/misc/Shutdown.php'; include_once $krexxDir . 'src/service/Storage.php'; include_once $krexxDir . 'src/service/flow/Recursion.php'; include_once $krexxDir . 'src/service/flow/Emergency.php'; include_once $krexxDir . 'src/analysis/Flection.php'; include_once $krexxDir . 'src/analysis/Routing.php'; include_once $krexxDir . 'src/analysis/Model.php'; include_once $krexxDir . 'src/analysis/callback/AbstractCallback.php'; include_once $krexxDir . 'src/analysis/callback/analyse/BacktraceStep.php'; include_once $krexxDir . 'src/analysis/callback/analyse/ConfigSection.php'; include_once $krexxDir . 'src/analysis/callback/analyse/Debug.php'; include_once $krexxDir . 'src/analysis/callback/analyse/Objects.php'; include_once $krexxDir . 'src/analysis/callback/iterate/ThroughArray.php'; include_once $krexxDir . 'src/analysis/callback/iterate/ThroughConfig.php'; include_once $krexxDir . 'src/analysis/callback/iterate/ThroughConstants.php'; include_once $krexxDir . 'src/analysis/callback/iterate/ThroughMethodAnalysis.php'; include_once $krexxDir . 'src/analysis/callback/iterate/ThroughMethods.php'; include_once $krexxDir . 'src/analysis/callback/iterate/ThroughProperties.php'; include_once $krexxDir . 'src/analysis/callback/iterate/ThroughGetter.php'; include_once $krexxDir . 'src/analysis/caller/AbstractCaller.php'; include_once $krexxDir . 'src/analysis/caller/Php.php'; include_once $krexxDir . 'src/errorhandler/Error.php'; include_once $krexxDir . 'src/errorhandler/Fatal.php'; include_once $krexxDir . 'src/controller/Internals.php'; include_once $krexxDir . 'src/controller/OutputActions.php'; // Create a new storage where we sotre all our classes. self::$storage = new Storage($krexxDir); }