dbxapp 4.1.3
CMS, Shop, Workflows und modulare Geschäftsanwendungen
Loading...
Searching...
No Matches
dbxDB_dynamic_reconnect_test.php
Go to the documentation of this file.
1<?php
2
3$root = dirname(__DIR__, 3);
4chdir($root);
5$_SERVER['REQUEST_URI'] = '/dbxapp/';
6$_SERVER['HTTP_HOST'] = 'localhost';
7$_SERVER['HTTPS'] = 'on';
8$_SERVER['SCRIPT_NAME'] = '/dbxapp/index.php';
9
10if (!defined('dbxSystem')) {
11 define('dbxSystem', 'dbxWebApp');
12}
13if (!defined('dbxRunAsAdmin')) {
14 define('dbxRunAsAdmin', 1);
15}
16
17require_once $root . '/dbx/vendor/autoload.php';
18require_once $root . '/dbx/include/dbxKernel.php';
19
20$server = 'dbxContact|dbxDynamicReconnectTest.db3';
21$databaseFile = $root . '/dbx/modules/dbxContact/db/dbxDynamicReconnectTest.db3';
22if (!is_file($databaseFile)
23 && file_put_contents($databaseFile, '') === false) {
24 fwrite(STDERR, "FAIL: Isolierte Testdatenbank konnte nicht angelegt werden.\n");
25 exit(1);
26}
27$db = dbx()->get_system_obj('dbxDB');
28if (!is_object($db)) {
29 fwrite(STDERR, "FAIL: dbxDB nicht verfuegbar.\n");
30 exit(1);
31}
32
33if ($db->connect_db_server($server) !== 1) {
34 fwrite(STDERR, "FAIL: Erste Verbindung zur dynamischen Modul-DB fehlgeschlagen.\n");
35 exit(2);
36}
37
38$created = $db->exec(
39 $server,
40 'CREATE TABLE IF NOT EXISTS reconnect_probe (id INTEGER PRIMARY KEY)'
41);
42if ($created < 0) {
43 fwrite(STDERR, "FAIL: Testtabelle konnte nicht über dbxDB angelegt werden.\n");
44 exit(3);
45}
46
47if ($db->connect_db_server($server) !== 1) {
48 fwrite(STDERR, "FAIL: Wiederverbindung zur dynamischen Modul-DB fehlgeschlagen.\n");
49 exit(4);
50}
51
52$probe = $db->select_query(
53 $server,
54 "SELECT COUNT(*) AS table_count FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'"
55);
56if (!is_array($probe) || (int)($probe[0]['table_count'] ?? 0) < 1) {
57 fwrite(STDERR, "FAIL: Abfrage nach der Wiederverbindung fehlgeschlagen.\n");
58 exit(5);
59}
60
61echo "OK dbxDB dynamic reconnect\n";
62
63// Die isolierte Testdatenbank darf nach einem Einzeltest weder den
64// Quellbaum noch den späteren Release-Hygiene-Test verunreinigen.
65unset($db->db[$server]);
66$db->pdo = null;
67foreach (array($databaseFile, $databaseFile . '-wal', $databaseFile . '-shm') as $testFile) {
68 if (is_file($testFile) && !unlink($testFile)) {
69 fwrite(STDERR, "FAIL: Isolierte Testdatenbank konnte nicht entfernt werden.\n");
70 exit(6);
71 }
72}
$_SERVER['REQUEST_METHOD']
if(!is_object( $db)) if($db->connect_db_server($server) !==1) $created
if( $created< 0) if($db->connect_db_server($server) !==1) $probe
exit
Definition index.php:146
DBX schema administration.