Php mysql kết nối liên tục

Điều này thực hiện chính xác những gì câu hỏi yêu cầu và hơn thế nữa. Tôi sẽ không đi sâu vào chi tiết về những gì tôi có thể tìm hiểu về vấn đề này nhưng sẽ đề cập rằng đó không phải là một giải pháp khả thi vì nó không minh bạch. Có nghĩa là dòng chảy như sau

PHP -> Queries -> SQL Relay Extension -> SQL Relay -> Externally hosted MySQL

Vì vậy, điều này sẽ liên quan đến việc viết lại tất cả mã của chúng tôi từ mysql sang sql relay. Không phải là một lựa chọn trong trường hợp của chúng tôi

Tất cả những gì đang được nói, nếu ai đó đang lên kế hoạch cho một dự án quy mô lớn mới yêu cầu bất kỳ tính năng nào trong số vô số tính năng mà SQL Relay có, thì điều đó nghe có vẻ hay

Proxy Mysql

http. //làm giả. mysql. com/wiki/MySQL_Proxy

Đây là giải pháp cuối cùng chúng tôi đã sử dụng

Chìa khóa để làm điều này làm những gì chúng tôi muốn nó làm là tập lệnh LUA tổng hợp cho proxy mysql

Phần mở rộng LUA này có thể được tìm thấy tại

https. //github. com/cwarden/mysql-proxy/blob/315ab806bb95b8223f5afd3d238eff2a40af03d8/lib/ro-pooling. lúa

Không đi vào quá nhiều chi tiết, đây là một số thống kê cơ bản. Xin lưu ý rằng, điều này được thử nghiệm ở thời gian sử dụng THẤP

[root@HOSTNAME etc]# netstat -na | grep ":3306 " | grep TIME_WAIT | wc
   6433   38598  572537

Sau khi chuyển sang mysql-proxy và để mọi thứ ổn định

[root@HOSTNAME etc]# netstat -na | grep ":3306 " | grep TIME_WAIT | wc
     32     192    2848

Như bạn có thể thấy rõ, các cổng TIME_WAIT tới mysql đã giảm xuống gần như không có

Trên thực tế, các kết nối hiện đang tồn tại mà KHÔNG sử dụng mysql_pconnect/mysqli_connect[. P. tên máy chủ. ]

Đáng nói là dường như có một vài cài đặt có thể định cấu hình ở gần đầu tập lệnh lua của pooler

min_idle_connections cục bộ

max_idle_connections cục bộ

Chúng dường như khá tự giải thích. Ngoại trừ việc. Có vẻ như mỗi tên người dùng [và mật khẩu? chưa được kiểm tra. rất có thể không tho. ] kết hợp tạo tập hợp các kết nối liên tục của riêng nó

Vì vậy, hãy nhân max_idle_connections với số lượng người dùng mysql duy nhất sẽ kết nối với cơ sở dữ liệu. Và điều đó sẽ cho bạn ý tưởng về việc bạn sẽ có bao nhiêu kết nối nhàn rỗi

Vì vậy, hãy để tôi nhắc lại để lời giới thiệu nhỏ này đánh vào một số từ khóa cho những người tìm kiếm qua google

Khi sử dụng PHP có thể có các kết nối mysql liên tục mà KHÔNG CÓ mysql_pconnect không?

Có, điều này có thể được thực hiện thông qua SQL Relay nếu bạn không ngại xây dựng lại hầu hết mã của mình để chuyển các truy vấn của bạn thông qua tiện ích mở rộng của chúng HOẶC sử dụng mysql-proxy một cách minh bạch với ro-pooling. kịch bản lua

Trong PDO, kết nối tới cơ sở dữ liệu có thể liên tục hoặc không liên tục. Kết nối liên tục thực hiện bằng cách sử dụng thuộc tính PDO. ATTR_PERSISTENT. Các kết nối liên tục không đóng khi tập lệnh kết thúc, nhưng chúng được lưu vào bộ đệm ẩn và có thể được sử dụng lại khi một kết nối liên tục được yêu cầu giống hệt với kết nối hiện có.  

Khi một kết nối được yêu cầu, PHP sẽ kiểm tra xem kết nối đó đã tồn tại hay chưa, nếu tồn tại thì nó được sử dụng để thực thi. Nó ảnh hưởng đến thời gian thực hiện các yêu cầu, nó nhanh hơn kết nối không liên tục.  

Nhưng cũng có một số nhược điểm của kết nối liên tục. Theo tài liệu hướng dẫn sử dụng php

Nếu tập lệnh vì bất kỳ lý do gì không thể giải phóng khóa, thì các tập lệnh tiếp theo sử dụng cùng một kết nối sẽ chặn vô thời hạn và có thể yêu cầu bạn khởi động lại máy chủ http hoặc máy chủ cơ sở dữ liệu. Một điều nữa là khi sử dụng các giao dịch, một khối giao dịch cũng sẽ chuyển sang tập lệnh tiếp theo sử dụng kết nối đó nếu việc thực thi tập lệnh kết thúc trước khi khối giao dịch thực hiện

Cách tiếp cận 1. Ví dụ về kết nối liên tục. Chúng tôi đã thảo luận rằng các kết nối liên tục không bị đóng ở cuối tập lệnh, nhưng được lưu vào bộ nhớ cache và được sử dụng lại khi một tập lệnh khác yêu cầu kết nối bằng cùng thông tin đăng nhập. Do kết nối liên tục được lưu vào bộ nhớ đệm nên sẽ có lợi khi tránh được chi phí thiết lập kết nối mới. Không cần thiết lập kết nối mỗi lần với cơ sở dữ liệu và kết quả là tối ưu hóa truy vấn nhanh.  

PHP




Chủ Đề