Problem: Ich habe festgestellt, dass die Transaktion, wenn sie nicht festgeschrieben oder zurückgesetzt wird, automatisch zurückgesetzt wird, nachdem die HTTP-Anfrage endet
Codebeispiel:
<code>$this->db->begin(); // 这时候user表这条记录就已经被锁住了。。。 $user = \Users::findFirst($id); $user->name = '写锁啊!'; sleep(15); $user->save(); return ; </code>
Aber wenn diese Anfrage endet, kann dieser Datensatz in der Datenbank erneut bearbeitet werden. . .
Ich würde gerne fragen, ob es Nginx, FPM oder Phalcon ist, das automatisch PDO->rollback(); ??????
Problem: Ich habe festgestellt, dass die Transaktion, wenn sie nicht festgeschrieben oder zurückgesetzt wird, automatisch zurückgesetzt wird, nachdem die HTTP-Anfrage endet
Codebeispiel:
<code>$this->db->begin(); // 这时候user表这条记录就已经被锁住了。。。 $user = \Users::findFirst($id); $user->name = '写锁啊!'; sleep(15); $user->save(); return ; </code>
Aber wenn diese Anfrage endet, kann dieser Datensatz in der Datenbank erneut bearbeitet werden. . .
Ich würde gerne fragen, ob es Nginx, FPM oder Phalcon ist, das automatisch PDO->rollback(); ??????
Der automatische Übermittlungsparameter AUTOCOMMIT von MySQL ist standardmäßig aktiviert, wenn in der Transaktion ein Commit-Befehl auftritt.
Wenn er über einen MySQL-Treiber in anderen Sprachen ausgeführt wird, nachdem die Anforderung beendet ist oder Timeout), MySQL Der Treiber führt automatisch ein ROLLBACK unverarbeiteter Transaktionen durch.