diff --git a/examples/lamp/php/index.php b/examples/lamp/php/index.php index 09f165d..b361578 100644 --- a/examples/lamp/php/index.php +++ b/examples/lamp/php/index.php @@ -1,84 +1,82 @@ PDO::ERRMODE_EXCEPTION, + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ]; try { - $pdo = new PDO($dsn, $user, $pass, $options); - $pdo->exec("CREATE DATABASE IF NOT EXISTS `$db`"); - $pdo->exec("USE `$db`"); - $pdo->exec(" + $pdo = new PDO($dsn, $user, $pass, $options); + $pdo->exec("CREATE DATABASE IF NOT EXISTS `$db`"); + $pdo->exec("USE `$db`"); + $pdo->exec(" CREATE TABLE IF NOT EXISTS filler ( id INT AUTO_INCREMENT PRIMARY KEY, data LONGBLOB ) "); } catch (\PDOException $e) { - die("Database setup failed: " . $e->getMessage()); + die("❌ DB connection failed: " . $e->getMessage()); } -// Disk usage (PVC mount path) -$mountPath = '/var/lib/mysql'; // Change this if PVC is mounted elsewhere -$freeBytes = disk_free_space($mountPath); -$totalBytes = disk_total_space($mountPath); -$freeGB = round($freeBytes / (1024 ** 3), 2); -$totalGB = round($totalBytes / (1024 ** 3), 2); -$usedGB = round(($totalBytes - $freeBytes) / (1024 ** 3), 2); +// Get database size from information_schema +try { + $stmt = $pdo->query(" + SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb + FROM information_schema.tables + WHERE table_schema = 'testfill' + "); + $dbSize = $stmt->fetch()['total_size_gb'] ?? '0'; +} catch (Exception $e) { + $dbSize = 'N/A'; +} $message = ''; - - -if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['fill'])) { - - - - $chunkSize = 1024 * 1024; // 1MB - $iterations = 1024; // 1GB total - $data = str_repeat(random_bytes(1024), 1024); // ~1MB binary blob - +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) { + // Insert ~1GB of binary data + $iterations = 1024; + $data = str_repeat(random_bytes(1024), 1024); // 1MB $stmt = $pdo->prepare("INSERT INTO filler (data) VALUES (:data)"); for ($i = 0; $i < $iterations; $i++) { $stmt->execute([':data' => $data]); - } + } + // Recalculate DB size + $stmt = $pdo->query(" + SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb + FROM information_schema.tables + WHERE table_schema = 'testfill' + "); + $dbSize = $stmt->fetch()['total_size_gb'] ?? '0'; - clearstatcache(); - $freeBytes = disk_free_space($mountPath); - $freeGB = round($freeBytes / (1024 ** 3), 2); - $usedGB = round(($totalBytes - $freeBytes) / (1024 ** 3), 2); - - $message = "

✅ 1GB inserted. Disk usage updated.

"; + $message = "

✅ 1GB inserted into MariaDB successfully.

"; } ?> - Volume Filler + MariaDB Filler -

Kubernetes PVC Filler

+

MariaDB Storage Filler

@@ -87,4 +85,3 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['fill'])) { - diff --git a/harmony/src/modules/lamp.rs b/harmony/src/modules/lamp.rs index 2110904..49fcb87 100644 --- a/harmony/src/modules/lamp.rs +++ b/harmony/src/modules/lamp.rs @@ -113,7 +113,18 @@ impl Interpret for LAMPInterpret { } } }, - ]), + { + "name": "MYSQL_HOST", + "value": "harmony-lamp-demo-database-mariadb" + }, + { + "name": "MYSQL_DATABASE", + "value": "testfill" + }, + { + "name": "MYSQL_USER", + "value": "root" + }]), }; info!("Deploying score {deployment_score:#?}"); @@ -257,6 +268,13 @@ opcache.fast_shutdown=1 sed -i 's/ServerSignature On/ServerSignature Off/' /etc/apache2/conf-enabled/security.conf" )); + // Set env vars + dockerfile.push(RUN::from( + "echo 'PassEnv MYSQL_PASSWORD' >> /etc/apache2/sites-available/000-default.conf \ + && echo 'PassEnv MYSQL_USER' >> /etc/apache2/sites-available/000-default.conf \ + && echo 'PassEnv MYSQL_HOST' >> /etc/apache2/sites-available/000-default.conf" + )); + // Create a dedicated user for running Apache dockerfile.push(RUN::from( "groupadd -g 1000 appuser && \