Heim  >  Artikel  >  Backend-Entwicklung  >  Lösung von Problemen, die bei PHP-Datenbanktransaktionen auftreten

Lösung von Problemen, die bei PHP-Datenbanktransaktionen auftreten

不言
不言nach vorne
2019-04-13 11:38:052819Durchsuche

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

Als ich verwirrt war, schaute ich mir die Dokumentation an und fand einen Fehler, der es schon lange gab: https://bugs.php.net/bug.php?.. .

Später haben wir das Problem gelöst, indem wir vorübergehend

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen