Der Inhalt dieses Artikels befasst sich mit der Lösung von Problemen, die bei PHP-Datenbanktransaktionen auftreten. Er hat einen gewissen Referenzwert. Ich hoffe, dass er für Sie hilfreich ist.
Ein Problem wurde bei der Verwendung der PDO-Erweiterung von PHP entdeckt. Wenn die Verbindung zwischen PHP und MySQL getrennt wird, führt dies dazu, dass PHP direkt eine Warnausnahme aufzeichnet, anstatt sie direkt auszulösen Der Prozess zum Auslösen einer Ausnahme
ist wie folgt:
/** * 一个用户财产变更的场景下 */ try { // 1. 开启事务 /** * 2. 变更用户财产,增加财产变更的流水记录 */ // 3. 提交事务 } catch (\Exception $e) { // 4. 回滚事务 // 5. 记错误日志 // 6. 抛出异常 } // 7. 发布用户财产变更的广播
Die oben genannten Vorgänge können einfach in fünf Kategorien unterteilt werden. Nach meinem bisherigen Verständnis ist der allgemeine Prozess zum Ausführen von Transaktionen ohne Ausnahmen wie oben geworfen Die Transaktion wurde erfolgreich übermittelt
Aber bis eines Tages eine Transaktion gestartet wurde. Während des Prozesses von 1-2 hängt die Datenbank dann direkt, wenn die Transaktion in Schritt 3 A übermittelt wird 🎜> Ebenenfehler ist direkt aufgetreten, warning
keine Ausnahme wurde abgefangen "SQLSTATE[HY000]: General error: 2006 MySQL server has gone away" ,
, daher haben andere Geschäftsparteien in den nachfolgenden Schritten von Schritt 7 die nicht übermittelte Transaktions-ID abgerufen und Statistiken erstellt, aber tatsächlich hat sich die Benutzereigenschaft nicht erhöht. Dies führte zu dem Problem
am Ort der Transaktionset_error_handler
konfiguriert haben
Das obige ist der detaillierte Inhalt vonLösung von Problemen, die bei PHP-Datenbanktransaktionen auftreten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!