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']),
+ ],
];
}