Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao chúng tôi đóng kết quả là Mysqli

Việc kiểm tra của bạn nếu kết nối không thành công nằm ở mã sử dụng kết nối. Rõ ràng là điều đó sẽ không hoạt động vì nó không phải là kết nối trực tiếp. Đảm bảo rằng nếu kết nối không thành công, mã phụ thuộc vào nó sẽ không đạt được. (Lưu ý rằng tôi không cần thiết phải ủng hộ việc sử dụng thoát hoặc chết. Chúng có thể tạo ra trải nghiệm người dùng khá tệ. Chúng có thể hữu ích, nhưng lý tưởng nhất là bạn nên xuất một thông báo tốt hơn và để lại nội dung lỗi xấu xí cho nhật ký [trừ khi bạn ' chỉ đang thử nghiệm hoặc đó là một tập lệnh dòng lệnh]).

Đối với close () (thực ra là một bí danh miễn phí ()):

free () về cơ bản đối phó tất cả những thứ được đính kèm với kết quả. Bạn cần hiểu rằng có hai cách (đơn giản hóa nhưng đi kèm với nó) để truy xuất hàng:

Đã lưu vào bộ đệm - Mọi thứ được tóm gọn trong một lần. Nói cách khác, vào thời điểm bạn bắt đầu lặp lại các bản ghi, chúng thực sự đã nằm trong bộ nhớ. Chúng được đệm . Chúng không được kéo từ máy chủ mỗi khi bạn gọi fetch () mà đang được lấy từ bộ nhớ.

Không có bộ đệm - có thể có một bộ đệm nhỏ, nhưng về cơ bản mỗi khi bạn gọi fetch (), PHP phải kéo một hàng mới từ cơ sở dữ liệu. Ở phần đầu của vòng lặp, chúng không nằm trong bộ nhớ.

Lưu ý thú vị:num_rows () có thể được gọi trên một truy vấn được đệm rất hiệu quả vì tất cả các hàng đã được kéo (mặc dù bạn không bao giờ nên kéo tất cả các hàng chỉ để đếm chúng - đó là chức năng của COUNT). Các truy vấn không có bộ đệm không thể thực hiện num_rows () cho đến khi chúng kéo tất cả các hàng. Có nghĩa là nó sẽ là một lỗi hoặc về cơ bản sẽ biến nó thành một truy vấn được lưu trong bộ đệm.

Dù sao, quay lại câu hỏi thực tế của bạn:

free () giải phóng mọi thứ liên quan đến đối tượng kết quả. Trong trường hợp truy vấn được đệm, đây là bất kỳ hàng nào nằm trong bộ nhớ. Trong trường hợp truy vấn không có bộ đệm, free () sẽ giải phóng bất kỳ hàng nào có thể nằm trong bộ nhớ và sau đó hủy phần còn lại của yêu cầu. Về cơ bản PHP của nó nói với MySQL, "Này bạn biết tất cả những hàng tôi yêu cầu không? Tôi đã thay đổi ý định. Bạn chỉ có thể bỏ yêu cầu đó".

Về việc bạn có nên miễn phí kết quả hay không ... Chà, bất cứ khi nào biến vượt ra khỏi phạm vi *, nó sẽ xảy ra. Tuy nhiên, không có hại gì khi thực hiện điều đó một cách rõ ràng và trong các tình huống mà một truy vấn có thể sử dụng nhiều bộ nhớ và sau đó một truy vấn khác sau khi nó có thể sử dụng nhiều bộ nhớ, bạn có thể muốn giải phóng các bộ chỉ để giữ mức sử dụng bộ nhớ thấp .

* Hoặc có thể khi yêu cầu kết thúc. Tôi không nhớ rõ đầu mình.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để sao lưu và khôi phục cơ sở dữ liệu MySQL?

  2. sử dụng mysql_free_result ($ result) có phải là một phương pháp hay không?

  3. Tạo tập lệnh bash giám sát truy vấn MySQL

  4. Làm cách nào để tải cơ sở dữ liệu SQL vào R từ máy chủ cục bộ?

  5. Các lỗi tham số trong Laravel