diff --git a/examples/lamp/php/index.php b/examples/lamp/php/index.php index b361578..471f6a2 100644 --- a/examples/lamp/php/index.php +++ b/examples/lamp/php/index.php @@ -3,14 +3,12 @@ ini_set('display_errors', 1); error_reporting(E_ALL); -// Load dynamic secrets from environment $host = getenv('MYSQL_HOST') ?: ''; $user = getenv('MYSQL_USER') ?: 'root'; $pass = getenv('MYSQL_PASSWORD') ?: ''; $db = 'testfill'; $charset = 'utf8mb4'; -// Connect to MariaDB $dsn = "mysql:host=$host;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, @@ -18,10 +16,10 @@ $options = [ ]; 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 @@ -31,22 +29,26 @@ try { die("❌ DB connection failed: " . $e->getMessage()); } -// Get database size from information_schema -try { +function getDbStats($pdo, $db) { $stmt = $pdo->query(" - SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb + SELECT + ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_size_gb, + SUM(table_rows) AS total_rows FROM information_schema.tables - WHERE table_schema = 'testfill' + WHERE table_schema = '$db' "); - $dbSize = $stmt->fetch()['total_size_gb'] ?? '0'; -} catch (Exception $e) { - $dbSize = 'N/A'; + $result = $stmt->fetch(); + $sizeGb = $result['total_size_gb'] ?? '0'; + $rows = $result['total_rows'] ?? '0'; + $avgMb = ($rows > 0) ? round(($sizeGb * 1024) / $rows, 2) : 0; + return [$sizeGb, $rows, $avgMb]; } +list($dbSize, $rowCount, $avgRowMb) = getDbStats($pdo, $db); + $message = ''; 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)"); @@ -55,13 +57,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) { $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'; + list($dbSize, $rowCount, $avgRowMb) = getDbStats($pdo, $db); $message = "

✅ 1GB inserted into MariaDB successfully.

"; } @@ -76,7 +72,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fill'])) {

MariaDB Storage Filler

diff --git a/harmony/src/modules/lamp.rs b/harmony/src/modules/lamp.rs index 49fcb87..cc69e60 100644 --- a/harmony/src/modules/lamp.rs +++ b/harmony/src/modules/lamp.rs @@ -115,16 +115,9 @@ impl Interpret for LAMPInterpret { }, { "name": "MYSQL_HOST", - "value": "harmony-lamp-demo-database-mariadb" + "value": secret_name }, - { - "name": "MYSQL_DATABASE", - "value": "testfill" - }, - { - "name": "MYSQL_USER", - "value": "root" - }]), + ]), }; info!("Deploying score {deployment_score:#?}"); @@ -272,7 +265,7 @@ opcache.fast_shutdown=1 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" + && echo 'PassEnv MYSQL_HOST' >> /etc/apache2/sites-available/000-default.conf", )); // Create a dedicated user for running Apache