![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Chciałbym zapytać o taką rzecz: jak postępować w przypadku gdy
strona używa bazy danych, a może wystąpić błąd przerywający tworzenie strony. Pytam bo nie wiem czy PHP automatycznie wycofuje transakcje i zamyka połączenie z bazą. Czy takie rozwiązanie z funkcją shutdownDatabase() ma sens: function openDatabase() { global $db, $inTransaction; $db = new mysqli('localhost', MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE); if (!empty($db->connect_error)) { $db = null; return false; } $db->query('SET NAMES latin2'); $db->query('SET CHARACTER SET latin2 COLLATE latin2_polish_ci'); $db->autocommit(true); $inTransaction = false; register_shutdown_function('shutdownDatabase'); return true; } function closeDatabase() { global $db; if (!is_null($db)) { $db->close(); } } function startTransaction() { global $db, $inTransaction; $db->autocommit(false); $db->query('START TRANSACTION'); $inTransaction = true; } function commitTransaction() { global $db, $inTransaction; $inTransaction = false; if (!$db->commit()) { $db->rollback(); $db->autocommit(true); error(ERRMSG_DATABASE_OPERATION_FAILED); return; } $db->autocommit(true); } function rollbackTransaction() { global $db, $inTransaction; $inTransaction = false; if (!$db->rollback()) { $db->autocommit(true); error(ERRMSG_DATABASE_OPERATION_FAILED); return; } $db->autocommit(true); } function shutdownDatabase() { if ($inTransaction) { rollbackTransaction(); } closeDatabase(); } |
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 12:26 |