2008-09-19 30 views
6

Ở đầu mỗi trang PHP, tôi mở kết nối tới MySQL, sử dụng nó trên toàn trang và đóng nó ở cuối trang. Tuy nhiên, tôi thường chuyển hướng ở giữa trang đến một trang khác và vì vậy trong những trường hợp đó, kết nối không bị đóng. Tôi hiểu rằng điều này không phải là xấu đối với hiệu suất của máy chủ web vì PHP tự động đóng tất cả các kết nối MySQL ở cuối mỗi trang. Có bất kỳ vấn đề nào khác ở đây để ghi nhớ, hoặc là nó thực sự đúng là bạn không phải lo lắng về việc đóng các kết nối cơ sở dữ liệu của bạn trong PHP?Điều gì sẽ xảy ra nếu các kết nối MySQL liên tục không đóng trên các trang PHP?

$mysqli = new mysqli("localhost", "root", "", "test"); 
...do stuff, perhaps redirect to another page... 
$mysqli->close(); 

Trả lời

17

Từ:. http://us3.php.net/manual/en/mysqli.close.php

"kết nối mở (và các nguồn lực tương tự) sẽ được tự động bị phá hủy vào cuối thực hiện kịch bản Tuy nhiên, bạn nên vẫn còn gần hoặc miễn phí tất cả các kết nối, tập hợp kết quả và xử lý tuyên bố ngay khi chúng không còn cần thiết nữa. Điều này sẽ giúp trả về tài nguyên cho PHP và MySQL nhanh hơn. "

+0

Nhanh hơn bao nhiêu? Nó có liên tục chậm hơn khi nó tiếp tục không? – Pachonk

2

Có thể có giới hạn số lượng kết nối có thể mở cùng một lúc, vì vậy nếu bạn có nhiều người dùng, bạn có thể hết kết nối SQL. Trong thực tế, người dùng sẽ thấy các lỗi SQL thay vì các trang web đẹp.

Bạn nên mở kết nối để đọc dữ liệu, sau đó đóng kết nối, sau đó hiển thị dữ liệu và khi người dùng nhấp "gửi", bạn mở một kết nối khác rồi gửi tất cả thay đổi.

+0

"Có hiệu lực, người dùng sẽ thấy các lỗi SQL thay vì các trang web đẹp." - Tôi hy vọng không display_errors = 0 ;! – Ross

3

Chỉ vì bạn chuyển hướng không có nghĩa là tập lệnh ngừng thực thi. Chuyển hướng chỉ là tiêu đề được gửi. Nếu bạn không thoát() ngay sau đó, phần còn lại của tập lệnh sẽ tiếp tục chạy. Khi kịch bản kết thúc chạy, nó sẽ đóng tất cả các kết nối mở (hoặc thả chúng trở lại hồ bơi nếu bạn đang sử dụng các kết nối liên tục). Đừng lo lắng về điều đó.

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