diff --git a/composer.json b/composer.json index 755a501e..504262e7 100644 --- a/composer.json +++ b/composer.json @@ -29,6 +29,7 @@ "ifixit/php-akismet" : "1.*", "google/recaptcha" : "~1.1", "dapphp/securimage" : "3.6.*", + "shish/libcontext-php" : "dev-master", "bower-asset/jquery" : "1.12.3", "bower-asset/jquery-timeago" : "1.5.2", diff --git a/composer.lock b/composer.lock index 8f417a0d..b2720c6f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "ca673d1ec39051720ade02039e5e2b4e", + "content-hash": "eb5180245fbf27fb02d9a4018a2ff059", "packages": [ { "name": "bower-asset/jquery", @@ -259,6 +259,47 @@ "reference": "fd4ff50eb577457c1b7b887401663e91e77625ae" }, "type": "library" + }, + { + "name": "shish/libcontext-php", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/shish/libcontext-php.git", + "reference": "7c80a23c56cfb207c02c18292720d3bd5aac474d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/shish/libcontext-php/zipball/7c80a23c56cfb207c02c18292720d3bd5aac474d", + "reference": "7c80a23c56cfb207c02c18292720d3bd5aac474d", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "6.*" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Shish", + "email": "webmaster@shishnet.org", + "homepage": "http://shishnet.org", + "role": "Developer" + } + ], + "description": "A performance monitoring thing", + "homepage": "https://github.com/shish/libcontext-php", + "keywords": [ + "performance", + "profiler" + ], + "time": "2017-09-21T03:48:29+00:00" } ], "packages-dev": [ @@ -1715,6 +1756,7 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { + "shish/libcontext-php": 20, "bower-asset/tablesorter": 20 }, "prefer-stable": false, diff --git a/core/_bootstrap.inc.php b/core/_bootstrap.inc.php index 47be22aa..5ed87783 100644 --- a/core/_bootstrap.inc.php +++ b/core/_bootstrap.inc.php @@ -4,11 +4,11 @@ * actually do anything as far as the app is concerned */ -global $config, $database, $user, $page; +global $config, $database, $user, $page, $_shm_ctx; require_once "core/sys_config.inc.php"; require_once "core/util.inc.php"; -require_once "lib/context.php"; +require_once "vendor/shish/libcontext-php/context.php"; require_once "vendor/autoload.php"; require_once "core/imageboard.pack.php"; @@ -17,7 +17,7 @@ _version_check(); _sanitise_environment(); // load base files -ctx_log_start("Opening files"); +$_shm_ctx->log_start("Opening files"); $_shm_files = array_merge( zglob("core/*.php"), zglob("ext/{".ENABLED_EXTS."}/main.php") @@ -29,22 +29,22 @@ foreach($_shm_files as $_shm_filename) { } unset($_shm_files); unset($_shm_filename); -ctx_log_endok(); +$_shm_ctx->log_endok(); // connect to the database -ctx_log_start("Connecting to DB"); +$_shm_ctx->log_start("Connecting to DB"); $database = new Database(); $config = new DatabaseConfig($database); -ctx_log_endok(); +$_shm_ctx->log_endok(); // load the theme parts -ctx_log_start("Loading themelets"); +$_shm_ctx->log_start("Loading themelets"); foreach(_get_themelet_files(get_theme()) as $themelet) { require_once $themelet; } unset($themelet); $page = class_exists("CustomPage") ? new CustomPage() : new Page(); -ctx_log_endok(); +$_shm_ctx->log_endok(); // hook up event handlers _load_event_listeners(); diff --git a/core/util.inc.php b/core/util.inc.php index f6a357ec..bd425d89 100644 --- a/core/util.inc.php +++ b/core/util.inc.php @@ -1,5 +1,5 @@ log_start("Loading extensions"); $cache_path = data_path("cache/shm_event_listeners.php"); if(COMPILE_ELS && file_exists($cache_path)) { @@ -1482,7 +1482,7 @@ function _load_event_listeners() { } } - ctx_log_endok(); + $_shm_ctx->log_endok(); } function _set_event_listeners() { @@ -1568,27 +1568,27 @@ $_shm_event_count = 0; * @param Event $event */ function send_event(Event $event) { - global $_shm_event_listeners, $_shm_event_count; + global $_shm_event_listeners, $_shm_event_count, $_shm_ctx; if(!isset($_shm_event_listeners[get_class($event)])) return; $method_name = "on".str_replace("Event", "", get_class($event)); // send_event() is performance sensitive, and with the number // of times context gets called the time starts to add up - $ctx = constant('CONTEXT'); + $ctx_enabled = constant('CONTEXT'); - if($ctx) ctx_log_start(get_class($event)); + if($ctx_enabled) $_shm_ctx->log_start(get_class($event)); // SHIT: http://bugs.php.net/bug.php?id=35106 $my_event_listeners = $_shm_event_listeners[get_class($event)]; ksort($my_event_listeners); foreach($my_event_listeners as $listener) { - if($ctx) ctx_log_start(get_class($listener)); + if($ctx_enabled) $_shm_ctx->log_start(get_class($listener)); if(method_exists($listener, $method_name)) { $listener->$method_name($event); } - if($ctx) ctx_log_endok(); + if($ctx_enabled) $_shm_ctx->log_endok(); } $_shm_event_count++; - if($ctx) ctx_log_endok(); + if($ctx_enabled) $_shm_ctx->log_endok(); } @@ -1666,6 +1666,8 @@ date and you should plan on moving elsewhere. } function _sanitise_environment() { + global $_shm_ctx; + if(TIMEZONE) { date_default_timezone_set(TIMEZONE); } @@ -1679,8 +1681,9 @@ function _sanitise_environment() { assert_options(ASSERT_CALLBACK, 'score_assert_handler'); } + $_shm_ctx = new Context(); if(CONTEXT) { - ctx_set_log(CONTEXT); + $_shm_ctx->set_log(CONTEXT); } if(COVERAGE) { diff --git a/index.php b/index.php index eff7317b..c7561cbe 100644 --- a/index.php +++ b/index.php @@ -87,7 +87,7 @@ EOD; try { require_once "core/_bootstrap.inc.php"; - ctx_log_start(@$_SERVER["REQUEST_URI"], true, true); + $_shm_ctx->log_start(@$_SERVER["REQUEST_URI"], true, true); // start the page generation waterfall $user = _get_user(); @@ -102,11 +102,11 @@ try { // saving cache data and profiling data to disk can happen later if(function_exists("fastcgi_finish_request")) fastcgi_finish_request(); $database->commit(); - ctx_log_endok(); + $_shm_ctx->log_endok(); } catch(Exception $e) { if($database) $database->rollback(); _fatal_error($e); - ctx_log_ender(); + $_shm_ctx->log_ender(); } diff --git a/lib/context.php b/lib/context.php deleted file mode 100644 index 9372b3c7..00000000 --- a/lib/context.php +++ /dev/null @@ -1,62 +0,0 @@ -