exec($sql); $end = microtime(true); printf(" in %.2f seconds\n", $end - $start); } function truncateTables(): void { printf("Truncating tables"); $start = microtime(true); $dsn = "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_DATABASE']}"; $pdo = new PDO($dsn, $_ENV['DB_USER'], $_ENV['DB_PASSWORD']); $pdo->exec("SET FOREIGN_KEY_CHECKS=0"); $statement = $pdo->query('SHOW TABLES'); $tables = array_map(function(array $row) { return $row["Tables_in_{$_ENV['DB_DATABASE']}"]; }, $statement->fetchAll(PDO::FETCH_ASSOC)); foreach ($tables as $table) { $pdo->exec("TRUNCATE TABLE `$table`"); } $pdo->exec("SET FOREIGN_KEY_CHECKS=1"); $end = microtime(true); printf(" in %.2f seconds\n", $end - $start); } $schemaFilename = implode(DIRECTORY_SEPARATOR, [__DIR__, 'resources', 'database', 'schema.sql']); setupDatabase($schemaFilename); register_shutdown_function(function() { truncateTables(); });