2010-08-13 43 views
10

Nói tóm lại, là có một số loại mysqli_pconnect cho-sử dụng cao PHP & MySQL máy chủ, hoặc tôi cần phải gắn bó với mysql cải? Và nếu vậy, tại sao họ lại xóa nó?mysqli kết nối liên tục

Trả lời

15

Hỗ trợ cho điều này đã được giới thiệu trong PHP 5.3. Đối với các phiên bản trước đó, PDO và - god cấm - phần mở rộng mysql là các tùy chọn duy nhất.

Để trích dẫn manual:

Không giống như phần mở rộng mysql, mysqli không cung cấp một chức năng riêng biệt để mở kết nối liên tục. Để mở kết nối liên tục, bạn phải thêm p: vào tên máy chủ khi kết nối.

+0

Vì vậy, đối với trước 5.3, hack hoặc giải pháp là gì? – Pacerier

8

Tôi không bận tâm với các kết nối liên tục trong MySQL. Các kết nối liên tục dành cho các cơ sở dữ liệu như Oracle, trong đó tạo kết nối mới chậm hơn nhiều.

Trong MySQL, việc tạo kết nối tương đối nhanh (đặc biệt nếu bạn tắt tra cứu DNS ngược). Không cần phải có kết nối liên tục với MySQL. Nếu ứng dụng của bạn là yếu tố quan trọng về hiệu suất, có rất nhiều thứ bạn có thể làm với số tiền lớn hơn cho buck của bạn hơn là lo lắng về các kết nối liên tục.

Bên cạnh đó, các kết nối liên tục đi kèm với các tác dụng phụ không mong muốn. Nếu bạn sử dụng biến MySQL, bảng tạm thời, thay đổi bộ ký tự của kết nối hoặc quên hoàn tất giao dịch, bạn có thể gây ra sự cố. Ví dụ, bạn có thể phơi bày dữ liệu riêng tư của một người dùng đến phiên PHP của người dùng khác bởi vì bạn để lại một bảng tạm thời còn sống.

+0

Đọc trang hướng dẫn mà tôi đã liên kết. Có các hoạt động dọn dẹp sau mỗi yêu cầu PHP. Nhưng có, hầu hết các lần nó sử dụng kết nối liên tục sẽ không có giá trị nó. – Artefacto

+0

Cảm ơn, đó là yên tâm. –

4

Thực tế có persistent support cho thư viện mysqli. Chỉ cần thêm "p:" vào tên máy chủ và bạn đã hoàn tất.

+0

làm cách nào để bạn thêm "p:" vào tên máy chủ? ví dụ: \t \t \t $ this-> mysqli = new mysqli (mysql_host, mysql_user, mysql_password, mysql_database); –

+4

@JavaNewb: xin lỗi vì đã phục hồi một chuỗi cũ, nhưng chúng tôi đã để lại một câu hỏi chưa được trả lời! Tôi "prepend p:" với chuỗi nối. Ví dụ: $ this-> mysqli = new mysqli ('p:'. Mysql_host, mysql_user, mysql_password, mysql_database); –

+0

Đây là một giải pháp hoàn hảo tốt. Làm việc tuyệt vời cho tôi! – zmonteca

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