2013-06-01 33 views
5

Tôi có một tập lệnh php cli được thực hiện bất cứ khi nào một email đến một địa chỉ cụ thể.Liệu một tập lệnh php sẽ đợi nếu nó muốn đọc từ một bảng bị khóa?

Khi một email mới đến một phiên bản mới của tập lệnh được thực hiện nhưng vì chúng đọc/ghi vào cùng một bảng DB đôi khi dữ liệu sai được ghi.

Câu hỏi của tôi là nếu tập lệnh đầu tiên đặt khóa trên tất cả các bảng cần và một phiên bản thứ hai/thứ ba vv của tập lệnh được chạy, liệu chúng có chờ các bảng được mở bởi tập lệnh được thực thi đầu tiên không? Nếu có thì trong bao lâu?

Cuối cùng những gì tôi đang cố gắng làm là làm cho các tập lệnh làm đọc/ghi của chúng sau cái khác theo kiểu nối tiếp để tránh trùng lặp và lỗi.

+0

bạn cần cung cấp các ví dụ cụ thể, cũng như cách db của bạn được triển khai và chính xác những gì được viết trên db và cách thực hiện. cũng "dữ liệu sai được viết" vui lòng xác định. – Sharky

Trả lời

3

Có, nó sẽ đợi. Điều này được thực hiện bởi máy chủ cơ sở dữ liệu, ứng dụng khách hoàn toàn không biết rằng nó đang xảy ra - theo như nó có thể nói, cơ sở dữ liệu chỉ là chậm để thực hiện truy vấn.

0

Tập lệnh PHP sử dụng thư viện mysql (mysql, mysqli, pdo) vì bất kỳ ứng dụng khách mysql nào kết nối với máy chủ mysql và nó thực thi truy vấn. Máy chủ mysql có thể mất tất cả thời gian nó muốn.

Nhưng PHP có thể được đặt để có tổng thời gian thực thi tập lệnh (với bất kỳ truy vấn mysql nào được bao gồm) bị giới hạn. Nếu vượt quá giới hạn này, PHP sẽ giết tiến trình đang chạy. Thời gian thực hiện tối đa là 30 giây theo mặc định và cho cli thậm chí 300 giây, nếu tôi không nhầm. Bạn có thể thiết lập điều này trong php.ini. Bạn thậm chí có thể thiết lập thời gian thực hiện tối đa CLI thành không giới hạn.

+2

Truy vấn cơ sở dữ liệu không được bao gồm trong thời gian thực thi, với việc thực thi các hệ điều hành windows. Xem ghi chú trên trang hướng dẫn sử dụng: http://php.net/manual/en/function.set-time-limit.php – Nanne

Các vấn đề liên quan