2010-01-11 41 views
9

Tôi vừa chuyển từ khung MVC của riêng mình sang cộng đồng được hỗ trợ một (CodeIgniter). Tôi chỉ chuyển đổi các phiên của mình sang số CodeIgniter functions và thông báo rằng theo mặc định, lưu trữ dữ liệu phiên trong cookie được mã hóa. Cách thay thế mà chúng cung cấp là các phiên cơ sở dữ liệu chứ không phải các phiên tệp phía máy chủ như thư viện PHP gốc. Bây giờ trên trang web của tôi, tôi sẽ xây dựng một bảng điều khiển phụ trợ an toàn để cookie được mã hóa không giống như tùy chọn thông minh nhưng tôi không muốn kết nối với cơ sở dữ liệu của mình một cách không cần thiết vì nó không phải là rất nhanh (chia sẻ lưu trữ).Tôi có nên sử dụng Phiên cơ sở dữ liệu hoặc Phiên tệp PHP gốc không?

Tôi đang tự hỏi những gì các lý do đằng sau họ không hỗ trợ phiên bản địa sẽ và liệu phiên cơ sở dữ liệu hoặc buổi tập server-side thường được coi là lựa chọn tốt hơn.

Cảm ơn.

Trả lời

12

Về cơ bản, để lưu trữ dữ liệu của phiên giao dịch, người ta thường sử dụng một trong ba giải pháp:

  • file (mặc định)
  • cơ sở dữ liệu
  • memcached

tập tin là được sử dụng nhiều nhất, vì nó là mặc định - và nó hoạt động hoàn toàn tốt trong hầu hết các trường hợp - nhưng có ít nhất một tình huống mà nó không hoạt động: khi bạn hav e một số máy chủ và người dùng của bạn được cân bằng tải trên những số (tức là khi 1 người dùng không phải lúc nào cũng trên cùng một máy chủ).

Trong trường hợp đó, có một vị trí trung tâm/chia sẻ để lưu trữ các phiên là cần thiết - và cơ sở dữ liệu phù hợp với mô tả đó; và cũng dễ cài đặt - và các ứng dụng PHP thường làm việc với cơ sở dữ liệu. Một số cơ sở dữ liệu lưu trữ dữ liệu trong RAM (nhanh hơn), trên nhiều máy chủ tùy thích (vảy tốt).


Bạn nên sử dụng giải pháp nào?

Vâng, trong trường hợp đó là những tình huống nào?

  • tập tin là OK, ít nhất là chừng nào một người sử dụng luôn luôn là trên cùng một máy chủ
  • Nếu bạn cần một cơ sở dữ liệu cho ứng dụng của bạn, bạn có thể lưu trữ các phiên trong cơ sở dữ liệu: không cần bất kỳ cài đặt thêm vào một số (Ví dụ, Drupal thực hiện điều này, theo mặc định).
  • memcached cần thiết lập nhiều hơn, nhưng có lẽ là giải pháp tốt nhất nếu bạn có lưu lượng truy cập thực sự ...
Các vấn đề liên quan