Codeigniter $this->db->trans_begin(); wenn kein commit oder ein Rollback ausgeführt und die Seite wird aktualisiert, es sperrt die db
Ich habe eine Seite, wo $this->db->trans_begin();
verwendet wird und einige Einschübe gemacht sind. Dann modal geöffnet, und bittet Benutzer, um zu bestätigen, und wenn der Benutzer es bestätigt Sie verpflichtet die Transaktion sonst rollt. Aber wenn das modal öffnet, bevor ein commit oder ein Rollback passiert, ich aktualisieren den browser. Auf die gleiche Sache, die 3 bis 4 mal der browser hängt als Tabellen gesperrt...
Jemand weiß, wie man im Fall, dass die Transaktion geöffnet ist in codeigniter
und die Seite wird aktualisiert, ich kann es schließen, bevor eine neue?
- Wie bekommt man eine user-Reaktion auf eine offene Transaktion in PHP? Wenn Ihr Skript-Ausführung beendet, Ihre offenen mysql-verbindungen, die geschlossen werden sollen, und öffnen Sie Transaktionen abgebrochen werden sollte für Sie automatisch. Was für ein Tisch-engine benutzen Sie für Ihre Tabellen. Typisch sind MyISAM und InnoDB. Welche Verbindungsart Sie verwenden, persistent/non-persistent? Meine erste Vermutung ist, dass Sie eine dauerhafte Verbindung. Verwenden Sie einen nicht-persistenten oder nur Abbrechen, Ihre ausstehenden Transaktionen, bevor das script endet.
- Siehe codeigniter.com/user_guide/database/configuration.html Ändern der config den Wert für
pconnect
zuFALSE
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Yeah, das ist es, was Transaktionen gemeint sind, zu tun. Sie müssen in der Nähe oder roll-back.
Transaktionen sollten nur offen gehalten werden für so kurz wie möglich, so können Sie blockieren eine andere Aktivität. Sie sollte sicherlich nicht werden halten eine Transaktion geöffnet während der Wartezeit für Benutzer-feedback.
Fragen Sie den Benutzer, wenn bestimmte, dann nur, wenn Sie drücken Sie "ok" starten Sie die Transaktion, die die Arbeit machen und committen.