문제: 트랜잭션이 커밋 또는 롤백되지 않으면 http 요청이 끝난 후 자동으로 롤백되는 것을 발견했습니다
코드 예:
<code>$this->db->begin(); // 这时候user表这条记录就已经被锁住了。。。 $user = \Users::findFirst($id); $user->name = '写锁啊!'; sleep(15); $user->save(); return ; </code>
그러나 이 요청이 종료되면 데이터베이스의 이 기록을 다시 편집할 수 있습니다. . .
PDO->rollback()을 자동으로 호출하는 것이 nginx인지, fpm인지, phalcon인지 묻고 싶습니다. ????????
문제: 트랜잭션이 커밋 또는 롤백되지 않으면 http 요청이 끝난 후 자동으로 롤백되는 것을 발견했습니다
코드 예:
<code>$this->db->begin(); // 这时候user表这条记录就已经被锁住了。。。 $user = \Users::findFirst($id); $user->name = '写锁啊!'; sleep(15); $user->save(); return ; </code>
그러나 이 요청이 종료되면 데이터베이스의 이 기록을 다시 편집할 수 있습니다. . .
nginx, fpm 또는 phalcon ->rollback() ????????
MySQL의 AUTOCOMMIT 자동 제출 매개변수는 기본적으로 켜져 있습니다.
다른 언어의 MySQL 드라이버를 통해 작동하는 경우 요청이 완료된 후입니다. 또는 시간 초과), MySQL 드라이버는 처리되지 않은 트랜잭션을 자동으로 ROLLBACK합니다.