Nếu bạn đang sử dụng thư viện PHP bao bọc trình điều khiển, sau khi tạo một phiên bản của Client
ví dụ. được gọi là $client
, bạn có thể làm như sau:
$session = $client->startSession();
$session->startTransaction();
try {
// Perform actions.
$session->commitTransaction();
} catch(Exception $e) {
$session->abortTransaction();
}
Rất tiếc, tôi không thể tìm thấy bất kỳ tài liệu liên quan nào trong tham chiếu thư viện PHP sau khi tìm kiếm lướt qua, nhưng tôi đã tìm thấy các ví dụ trong các vấn đề của thư viện PHP gợi ý rằng việc tạo một phiên từ khách hàng và sử dụng phiên đó để bắt đầu sau đó cam kết hoặc hủy bỏ giao dịch là quy trình thích hợp.
Tuy nhiên, một số điều cần lưu ý:
-
Biến $ session cần được chuyển vào trong một tham số riêng biệt . I E. nếu bạn muốn thực thi
insertOne(['abc' => 1])
trong một phiên, bạn sẽ cầninsertOne(['abc' => 1], ['session' => $session])
. Nếu bạn không làm điều này, các hoạt động sẽ vẫn được thực hiện, nhưng sẽ không phải là một phần của phiên - tức là nếu sau đó bạn quay lại phiên, chúng sẽ không được hoàn tác. -
Giao dịch chỉ khả dụng nếu bạn đã định cấu hình một tập hợp bản sao . Ở giai đoạn này, MongoDB không hỗ trợ các giao dịch trên một máy chủ độc lập.
Nếu bạn xem tài liệu MongoDB (như được liên kết ở trên), bạn sẽ lưu ý rằng yêu cầu đối với tập hợp bản sao được sử dụng không được hiển thị đặc biệt nổi bật, nằm dưới tiêu đề thứ ba và đến sau tất cả mã mẫu (mà, nếu bạn giống tôi, sẽ là điều đầu tiên bạn tìm kiếm).