2012-03-05 32 views
7

Có một số bài đăng nhất định về thời gian đặt kết nối MySQL từ PHP bằng cách sử dụng mysql.connect_timeout. Tôi muốn biết nếu thiết lập thời gian chờ này từ PHP chỉ cần thời gian ra kết nối ban đầu với MySQL hoặc hợp lệ cho một truy vấn cụ thể đến cơ sở dữ liệu?Cài đặt PHP MySQL Thời gian chờ kết nối

Trường hợp của tôi ở đây là, tôi có một trang có kết nối với MySQL trên đầu trang và sau đó tôi thực hiện nói 3-4 truy vấn đến MySQL sau cái khác. Truy vấn thứ nhất và thứ hai chỉ mất 1-2 giây để thực thi khi truy vấn thứ 3 mất 20 giây. Bây giờ, trong trường hợp truy vấn thứ 3 mất hơn 20 giây, tôi muốn gọi hết thời gian. Vì vậy, câu hỏi ở đây là, thiết lập thời gian này từ PHP được áp dụng cho kết nối ban đầu với cơ sở dữ liệu hoặc nó cũng có thể áp dụng cho mọi truy vấn tiếp theo (độc lập). Nếu sau đó là trường hợp, sau đó làm thế nào tôi có thể thiết lập nó để thời gian chờ sau 20 giây cho truy vấn thứ 3?

Trả lời

4

Thông số connect_timeout chỉ hợp lệ vào thời gian kết nối. Sẽ rất hữu ích khi kiểm tra xem máy chủ DB của bạn có thể truy cập sau 20 giây hay không. Sau khi kết nối thời gian chờ được chỉ định không còn hợp lệ.

Tôi không tìm thấy bất kỳ tham số thời gian chờ truy vấn nào trên trang hướng dẫn mysql chính thức: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html vì vậy tôi không nghĩ rằng điều này là khả năng.

3

nhìn thấy nó:

set_time_limit(0); 
ini_set('mysql.connect_timeout','0'); 
ini_set('max_execution_time', '0'); 
+1

max_execution_time chỉ ảnh hưởng đến việc sử dụng CPU - truy vấn một cơ sở dữ liệu không sử dụng CPU từ quá trình php – iRaS

0

Bạn sẽ phải ngã ba một quá trình con, quá trình cha mẹ sẽ giết chết quá trình con nếu một số điều kiện không được đáp ứng trong vòng 20 giây.

Hoặc sử dụng ngôn ngữ như node.js không chặn luồng hiện tại cho thao tác IO như truy vấn.

1

Đó là trong tập tin cấu hình php của bạn. Vị trí của tệp này khác với một hệ thống khác. Trên Ubuntu và Debian, nó nằm trong /etc/php5/apache2/php.ini

mysql.connect_timeout = 60 /* the default value is 60 seconds */ 
+0

bất kỳ giải thích cho lý do tại sao tôi nhận được một phiếu bầu xuống trên một câu trả lời làm việc? – Kareem