2009-05-06 44 views
18

Tôi đang lên kế hoạch sử dụng MYSQL. Có phần mở rộng kết nối tổng hợp có sẵn không? Hoặc thực hành bình thường cho kết nối là gì? Đây có phải là một trong những sử dụng trong mọi nơi ...Kết nối php gộp mysql

mysqli_connect("localhost", "xxx", "xxx", "test"); 

Có phải mọi người sử dụng chỉ cần bình thường mysql_connect hoặc pconnect ..? Làm thế nào tốt hơn là pconnect và tôi nên làm gì cho PConnect?

Trả lời

21

bạn đã từng sử dụng mysql_pconnect() chưa? mysql_pconnect() hoạt động rất giống mysql_connect() với hai khác biệt lớn.

Trước tiên, khi kết nối, trước tiên, hàm sẽ cố tìm một liên kết (liên tục) đã mở với cùng một máy chủ, tên người dùng và mật khẩu. Nếu được tìm thấy, một số nhận dạng cho nó sẽ được trả lại thay vì mở một kết nối mới.

Thứ hai, kết nối với máy chủ SQL sẽ không bị đóng khi thực thi tập lệnh kết thúc. Thay vào đó, liên kết sẽ vẫn mở để sử dụng trong tương lai (mysql_close() sẽ không đóng các liên kết được thiết lập bởi mysql_pconnect()).

do đó Đây là loại liên kết được gọi là 'dai dẳng'

Kiểm tra nó here

1

Có 3 chức năng kết nối: thủ tục kết nối bình thường, không có tổng hợp, bạn không thể thực hiện được lưu trữ:

mysql_connect (chỉ sql)

mysql_pconnect: kết nối gộp, bạn không thể thực thi s thủ tục tored (chỉ sql)

mysqli_connect: kết nối bình thường, không có tổng hợp, bạn có thể thực hiện các thủ tục lưu trữ (cần mysql 5 hoặc cao hơn)

mysqli_pconnect: không tồn tại. Không có được xây dựng trong chức năng kết nối cả hai giải quyết thủ tục lưu trữ và tổng hợp

tôi lời khuyên (thông qua kinh nghiệm và lướt):

Nếu bạn cần các thủ tục lưu trữ, hãy bỏ qua tổng hợp và sử dụng mysqli_connect

Nếu bạn không cần thủ tục lưu trữ, sử dụng mysql_pconnect

2

Đây là một câu hỏi cũ, nhưng tôi muốn thêm hai xu của tôi, vì tôi đã xem xét cùng một vấn đề này. Kể từ PHP 5.3, mysqli hỗ trợ các kết nối liên tục, bạn chỉ cần thêm p: vào mặt trước của tên máy chủ.

Nếu bạn đang chạy Apache, bạn đã thử tìm kiếm kết nối tổng hợp với mysql thông qua mô-đun mod_dbd Apache chưa? Nó hỗ trợ kết nối tổng hợp cho MySQL.http://httpd.apache.org/docs/2.2/mod/mod_dbd.html

+0

Cám ơn ghi nhận 'p:' tiền tố chủ cho kết nối liên tục đòi hỏi ** PHP phiên bản 5.3 **. Đã không tìm thấy rằng nugget chút bất cứ nơi nào khác. –

9

Hỗ trợ kết nối liên tục là được giới thiệu trong PHP 5.3 cho phần mở rộng mysqli . Hỗ trợ đã có mặt trong PDO MYSQL và ext/mysql. Ý tưởng đằng sau các kết nối liên tục là kết nối giữa quá trình máy khách và cơ sở dữ liệu có thể được sử dụng lại bởi quy trình khách hàng , thay vì được tạo và hủy nhiều lần. Điều này làm giảm chi phí của việc tạo các kết nối mới mỗi lần một là bắt buộc, vì các kết nối không sử dụng được được lưu vào bộ nhớ cache và sẵn sàng để được sử dụng lại.

Không giống như phần mở rộng mysql, mysqli không cung cấp 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 giao diện người dùng p: đến tên máy chủ khi kết nối.

nguồn: http://www.php.net/manual/en/mysqli.persistconns.php

sample code: 
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name'); 

chỉnh sửa: Xin lỗi vì sự lừa bịp, không thấy câu trả lời khác.

4

sử dụng phần mở rộng mysqli hoặc PDO thay vì phần mở rộng mysql cũ.

bạn có thể nói với mysqli_connect hoặc mysqli::__construct sử dụng kết nối liên tục, nếu bạn có tiền tố hostname của bạn với 'p:'

http://php.net/manual/en/mysqli.construct.php

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