2010-01-24 26 views
9

Tôi đang cố gắng chuyển một phiên với kết nối mysqli cho nhiều truy vấn trên trang web, nhưng khi tôi cố gắng thực hiện truy vấn, nó sẽ xuất ra cảnh báo "Không thể tìm nạp mysqli"Không thể chuyển kết nối mysqli trong phiên trong php

$_SESSION['db']=new mysqli($host,$username,$password,$db); 

Không thể chuyển tham chiếu kết nối mysqli qua phiên không? có cách nào khác để sử dụng?

Trả lời

15

Có, rõ ràng là không thể.

Xem PHP Documentation here đề cập trong một đánh dấu Cảnh báo: "Một số loại dữ liệu không thể được tuần tự hóa, do đó được lưu trữ trong các phiên. "

Kết nối MySQL là một loại tài nguyên như vậy.

Bạn phải kết nối lại trên mỗi lần chạy trang.

Đây không phải là điều xấu nếu bạn có thể dựa vào kết nối tổng hợp qua mysql_pconnect(), nhưng trước tiên hãy xem thêm thông tin cơ bản về mysql_pconnect() trong this article.

2

Kết nối cơ sở dữ liệu là tài nguyên và không thể được lưu trữ trong phiên. Bạn sẽ phải xây dựng lại kết nối trong mỗi trang hoặc sử dụng persistent connection (PHP 5.3+).

1

Có - bạn không thể chuyển qua phiên. Tay cầm cụ thể cho yêu cầu. Bạn có thể đặt nó trong một tài nguyên được chia sẻ như memcache, và lấy tay cầm khi bạn cần nó.

Tuy nhiên, nếu bạn sử dụng kết nối tổng hợp, hãy nắm lấy tay cầm mới khi bạn cần (và đóng nó khi bạn hoàn thành) không phải là một hiệu suất lớn.

Luôn luôn phụ thuộc vào nhu cầu của bạn, nhưng yeah, tôi muốn một trong hai:

  • Tạo một tay cầm mới khi bạn cần nó/mỗi request/(bật kết nối tổng hợp)
  • Stick dbhandle trong memcache
Các vấn đề liên quan