From d3784698b93e954e8fb1b03b4889fbff199aaee1 Mon Sep 17 00:00:00 2001 From: Dewana Kretarta Lokeswara <53048107+dewanakl@users.noreply.github.com> Date: Fri, 15 Mar 2024 21:20:08 +0700 Subject: [PATCH 1/3] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 3475627..d1ceb30 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,7 @@ ## About Kamu -Kamu adalah PHP framework yang sangat sederhana. Saking sederhananya, serasa di localhost!!. -
-Dibantu dengan saya console untuk mempermudah dalam development aplikasi Anda. +"Kamu" merupakan PHP framework yang sangat simpel, memberikan pengalaman seolah-olah berada di localhost meskipun dalam mode production. Dibantu dengan "Saya" konsol yang membantu pengembangan aplikasi secara efisien. ## Get Started Project - Create a project with composer From 859f39dbf3de9fa56ce69648455f0e70580e889a Mon Sep 17 00:00:00 2001 From: dewanakl Date: Wed, 29 May 2024 10:51:29 +0700 Subject: [PATCH 2/3] feat: add health check --- app/Middleware/CookieMiddleware.php | 24 +++++++ app/Providers/RouteServiceProvider.php | 96 ++++++++++++++++++++++++++ routes/api.php | 11 +++ 3 files changed, 131 insertions(+) create mode 100644 app/Middleware/CookieMiddleware.php create mode 100644 routes/api.php diff --git a/app/Middleware/CookieMiddleware.php b/app/Middleware/CookieMiddleware.php new file mode 100644 index 0000000..62e3340 --- /dev/null +++ b/app/Middleware/CookieMiddleware.php @@ -0,0 +1,24 @@ +server->get('REQUEST_URL'), RouteServiceProvider::$API_PREFIX) !== false + && $request->server->get('REQUEST_URL') !== RouteServiceProvider::$API_PREFIX + ) { + Env::set('COOKIE', 'false'); + } + + return $next($request); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index ac38b65..74d2934 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -2,13 +2,23 @@ namespace App\Providers; +use App\Middleware\CookieMiddleware; use App\Middleware\CsrfMiddleware; +use Core\Database\DB; use Core\Facades\Provider; use Core\Routing\Route; use Core\Routing\Router; +use Exception; class RouteServiceProvider extends Provider { + /** + * Prefix api. + * + * @var string $API_PREFIX + */ + public static $API_PREFIX = '/api'; + /** * Jalankan sewaktu aplikasi dinyalakan. * @@ -22,6 +32,92 @@ public function booting() Route::middleware(CsrfMiddleware::class)->group(function () { Route::setRouteFromFile(); }); + + Route::prefix(static::$API_PREFIX)->middleware(CookieMiddleware::class)->group(function () { + Route::get('/health', [static::class, 'health']); + require_once base_path('/routes/api.php'); + }); + } + } + + /** + * Get health this application. + * + * @return \Core\Http\Respond + */ + public function health(): \Core\Http\Respond + { + $data = [ + 'status' => true + ]; + + if (!hash_equals(hash('sha3-512', env('APP_KEY')), request()->get('hash', ''))) { + return respond()->setContent(json($data, 200)); + } + + $data['system'] = [ + 'php_version' => PHP_VERSION, + 'execute_time' => execute_time(), + 'memory_peak_usage' => format_bytes(memory_get_peak_usage(true)), + ]; + + $data['system']['opcache'] = [ + 'jit_enabled' => false, + 'opcache_enabled' => false, + 'opcache_used_memory' => format_bytes(0), + 'opcache_free_memory' => format_bytes(0), + ]; + + if (function_exists('opcache_get_status')) { + $opcache = opcache_get_status(); + $data['system']['opcache'] = [ + 'jit_enabled' => $opcache['jit']['enabled'], + 'opcache_enabled' => $opcache['opcache_enabled'], + 'opcache_used_memory' => format_bytes($opcache['memory_usage']['used_memory']), + 'opcache_free_memory' => format_bytes($opcache['memory_usage']['free_memory']), + ]; } + + $data['database'] = [ + 'server_version' => null, + 'client_version' => null, + 'connection_status' => null, + 'server_info' => null, + 'error' => null, + ]; + + if ( + env('DB_DRIV') && + env('DB_HOST') && + env('DB_NAME') && + env('DB_PORT') && + env('DB_USER') + ) { + try { + $database = DB::getInfoDriver(); + $data['database'] = [ + 'server_version' => $database['SERVER_VERSION'], + 'client_version' => $database['CLIENT_VERSION'], + 'connection_status' => $database['CONNECTION_STATUS'], + 'server_info' => $database['SERVER_INFO'], + 'error' => null, + ]; + + $data['system']['execute_time'] = execute_time(); + } catch (Exception $e) { + $data['status'] = false; + $data['database'] = [ + 'server_version' => null, + 'client_version' => null, + 'connection_status' => null, + 'server_info' => null, + 'error' => $e->getMessage(), + ]; + + return respond()->setContent(json($data, 500)); + } + } + + return respond()->setContent(json($data, 200)); } } diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..833533f --- /dev/null +++ b/routes/api.php @@ -0,0 +1,11 @@ + Date: Wed, 29 May 2024 22:05:31 +0700 Subject: [PATCH 3/3] feat: improve health check --- app/Providers/RouteServiceProvider.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 74d2934..4b812f7 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -62,19 +62,27 @@ public function health(): \Core\Http\Respond ]; $data['system']['opcache'] = [ - 'jit_enabled' => false, 'opcache_enabled' => false, 'opcache_used_memory' => format_bytes(0), 'opcache_free_memory' => format_bytes(0), + 'jit' => [ + 'enabled' => false, + 'buffer_size' => format_bytes(0), + 'buffer_free' => format_bytes(0), + ] ]; if (function_exists('opcache_get_status')) { $opcache = opcache_get_status(); $data['system']['opcache'] = [ - 'jit_enabled' => $opcache['jit']['enabled'], 'opcache_enabled' => $opcache['opcache_enabled'], 'opcache_used_memory' => format_bytes($opcache['memory_usage']['used_memory']), 'opcache_free_memory' => format_bytes($opcache['memory_usage']['free_memory']), + 'jit' => [ + 'enabled' => $opcache['jit']['enabled'], + 'buffer_size' => format_bytes($opcache['jit']['buffer_size']), + 'buffer_free' => format_bytes($opcache['jit']['buffer_free']), + ], ]; }