Tôi đang nghiên cứu khả năng sử dụng memcached như một lưu trữ phiên cho một hệ thống được xây dựng trên CodeIgniter. Có ai đã làm điều này trước đây (đó có lẽ là một câu hỏi ngu ngốc :) và nếu như vậy folks kinh nghiệm của bạn là gì? Bạn đã sử dụng bất kỳ thư viện/tiện ích mở rộng hiện có nào chưa? Theo như cải thiện hiệu suất, bạn đã thấy gì? Bất kỳ cảnh báo nào?Sử dụng memcached như một lưu trữ phiên với CodeIgniter
Trả lời
Có PHP đặt phiên thành Memcache trực tiếp, chứ không phải thông qua mã khuôn khổ rất dễ dàng - nó chỉ thay đổi hai dòng trong php.ini:
# see http://php.net/manual/en/memcache.ini.php
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
này sử dụng hơi cũ (nhưng vẫn hoàn toàn được hỗ trợ) phần mở rộng 'memcache' từ PECL.
Bạn có thể chọn CodeIgniter Multicache Thư viện, có thể được tìm thấy ở đây: http://www.haughin.com/code/multicache/
Trong đoạn mã bạn có thể sử dụng đơn giản như thế này:
$this->load->library('cache');
//To use memcache
$this->cache->useMemcache($iptomemcache, $port); /*if you want, you can check to see if the connection even worked, as this will return false if the connection failed.*/
$this->cache->save('testkey', 'testdata', NULL, 3600); /*caches the testdata string for 1 hour. */
echo $this->cache->get('testkey');
//To switch back to file based caching
$this->cache->useFile();
//etc.
Đó là không thực tế để sử dụng Memcached cho việc lưu trữ của dữ liệu quan hệ (như MySQL); nó sẽ không hiệu quả để yêu cầu mỗi mục từ Memcached và sau đó kiểm tra xem nó có khớp với một truy vấn hay không. Có những giải pháp tốt hơn cho một vấn đề như vậy (ví dụ, xem xét các bảng bộ nhớ trong MySQL).
Mặt khác, nếu bạn đang tìm kiếm lưu trữ khóa/giá trị đơn giản, đó chắc chắn là một ứng dụng thực tế cho Memcached. Tuy nhiên, những gì tôi muốn được một chút cảnh giác là viết một trình điều khiển CodeIgniter cho nó. Giao diện cho Memcached trong PHP đã chết đơn giản:
$memcached->get('my key');
$memcached->set('my key', 'my value');
Tôi khuyên bạn chỉ nên sử dụng các lớp Memcached trực tiếp. Thêm tất cả các chi phí thêm vào CI chỉ có vẻ bẩn và không cần thiết cho tôi.
Mặt khác, tôi đã thấy việc triển khai Memcached được sử dụng cho công cụ phiên của CodeIgniter. Đó chắc chắn là một lý do rất hợp lý để viết một người lái xe, và tôi sẽ rất khuyến khích nó (phiên là một cơn đau ở cổ để quy mô).
Chúc may mắn
- 1. Người dùng dùng phiên của người dùng khác khi phiên được lưu trữ trong memcached (Rails)
- 2. Sử dụng lưu trữ bảng Azure cho phiên ASP.NET
- 3. phiên PHP và memcached
- 4. Sử dụng Phiên để lưu trữ xác thực?
- 5. Mẫu thiết kế để lưu trữ dữ liệu memcached
- 6. Công cụ lưu trữ MySQL tốt nhất để sử dụng cho việc lưu trữ phiên PHP
- 7. Có thể memcached lưu trữ các đối tượng phức tạp?
- 8. Khóa phiên giá quá dài cho memcached
- 9. memcached như một cửa hàng đối tượng trong Rails
- 10. Tôi đang sử dụng phiên bản CodeIgniter nào?
- 11. Lưu trữ thư viện codeigniter trong các thư mục con
- 12. Là Redis một bộ nhớ chỉ lưu trữ như memcached hoặc không ghi dữ liệu vào đĩa
- 13. Lịch sử kiểm soát phiên bản được lưu trữ và tính toán như thế nào?
- 14. Khi nào sử dụng memcached
- 15. Tôi có thể sử dụng html5 lưu trữ cục bộ để lưu trữ thông tin người dùng phiên xác thực
- 16. Sử dụng kho lưu trữ Git cục bộ với kho lưu trữ Subversion chính
- 17. Sử dụng toán tử NHƯ với thủ tục lưu trữ thông số
- 18. Các vấn đề với việc sử dụng lưu trữ Mercurial miễn phí như Bitbucket
- 19. Vùng lưu trữ git lưu trữ tệp như thế nào?
- 20. Sử dụng Git với kế hoạch chia sẻ lưu trữ
- 21. Lưu trữ cấu hình git như một phần của kho lưu trữ
- 22. Thực thi một Proc Oracle lưu trữ như Một tài
- 23. Kho lưu trữ như mẫu với Node và mongoose
- 24. Cách phiên làm việc trong Codeigniter
- 25. Lưu trữ giỏ hàng trong phiên
- 26. Làm thế nào để làm cho SQLAlchemy sử dụng Memcached?
- 27. Subversion lưu trữ các tệp trong kho lưu trữ như thế nào?
- 28. Lưu trữ một mảng với chrome.storage.local
- 29. Lưu trữ đối tượng trong Phiên
- 30. Sử dụng một Hashtable để chỉ lưu trữ các khóa?