2012-01-25 29 views
6

chúng tôi hiện đang sử dụng NAS cho các tệp phiên PHP để lưu trữ cho một loạt các máy chủ ứng dụng cân bằng tải tự động.DynamoDB cho các phiên PHP

Chúng tôi muốn thay thế điều này bằng giải pháp mạnh mẽ hơn và DynamoDB từ Amazon có vẻ thú vị. Tôi thấy một vấn đề có thể ở đây, tài liệu ở đây:

http://thwartedefforts.org/2006/11/11/race-conditions-with-ajax-and-php-sessions/

tôi nghi ngờ DynamoDB không hỗ trợ đối tượng khóa. Bất kỳ cách giải quyết nào bạn có thể nghĩ đến?

Nếu bạn có bất kỳ kinh nghiệm nào từ các hệ thống NoSQL khác được sử dụng cho phiên PHP cũng cảm thấy tự do để nhảy vào khi các bài học có thể tương tự.

Cảm ơn trước

Trả lời

8

Sử dụng các ghi có điều kiện của DynamoDB, bạn có thể thực hiện một lược đồ khóa bi quan tương tự như cách trình xử lý phiên mặc định của PHP hoạt động.

Một người khác cũng đã đưa ra yêu cầu về trình xử lý phiên DynamoDB: https://forums.aws.amazon.com/thread.jspa?messageID=328060.

Cập nhật: AWS SDK cho PHP hiện bao gồm trình xử lý phiên cho DynamoDB. Xem https://github.com/amazonwebservices/aws-sdk-for-php/blob/master/extensions/dynamodbsessionhandler.class.phphttp://docs.amazonwebservices.com/AWSSDKforPHP/latest/#i=DynamoDBSessionHandler

Cập nhật: Có một bài báo về phiên xử lý DynamoDB trên blog AWS: http://aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html

+0

+1 để thực hiện điều này và cho chúng tôi biết ngay lập tức, cảm ơn nhiều! –

+0

Ah chết tiệt. Tôi đã dành cả tuần trước khi viết của riêng tôi và sẽ chia sẻ nó. :(Cảm ơn bạn đã cập nhật! –

2

Ý tưởng thú vị (+1) - và một bài viết công phu thực sự, chỉ cần đọc lướt nó cho bây giờ mặc dù;)

Về tùy chọn NoSQL khác để lưu trữ session trong PHP bạn có thể muốn kiểm tra MongoSession – A PHP MongoDB Session Handler, có sự tham khảo Race Conditions with Ajax and PHP Sessions như tốt và dường như để giải quyết các vấn đề tài liệu trong khi chờ đợi:

tôi gần đây đã cập nhật thư viện để hỗ trợ atomic operations trên cả ghi phiên và thu gom rác thải để giúp ngăn chặn các điều kiện cuộc đua này.

Một cách tiếp cận tương tự nên có thể với Amazon DynamoDB cũng bằng phương tiện của một sự kết hợp thích hợp của cập nhật Conditional, đếm AtomicPhù Đọc, xem Working with Items in Amazon DynamoDB biết chi tiết về những khái niệm và/hoặc kiểm tra các mục FAQ sau:

  • Does Amazon DynamoDB support conditional operations? - có, bạn có thể chỉ định một điều kiện là phải được thỏa mãn cho một PUT, cập nhật hoặc xóa các hoạt động trên một mục sẽ được hoàn thành. [...] Hoạt động có điều kiện cho phép người dùng thực hiện các hệ thống điều khiển đồng thời lạc quan trên DynamoDB.
  • Does Amazon DynamoDB support increment or decrement operations? - Có, Amazon DynamoDB cho phép hoạt động tăng và giảm nguyên tử trên các giá trị vô hướng.
+0

Cảm ơn đã nhanh chóng và chi tiết câu trả lời! Đọc phù hợp sẽ đi một chặng đường dài để giúp thực sự. Các hoạt động tăng và giảm nguyên tử sẽ giúp ích nhưng không phải lúc nào cũng là những thay đổi tăng dần và giảm dần cần phải được áp dụng theo kiểu nguyên tử. Như vậy việc thiếu khóa vẫn có thể là một vấn đề. cảm ơn vì đã chỉ đúng hướng! Tôi sẽ điều tra thêm! – webgr

1

Máy chủ của bạn có trên AWS? Tại sao bạn không thử tính năng ElastCache? http://aws.amazon.com/en/elasticache/

Tôi sử dụng CakePHP, phù thủy hỗ trợ DB và Memcache để lưu phiên. Sau khi một số thời gian studding cả hai, tôi đã chọn cho Memcache. Trên thực tế, tôi đặt PHP để lưu trữ các phiên trên Memcache và đặt CakePHP để sử dụng cấu hình phiên php. Bằng cách này tôi có thể tách riêng các cá thể memcache của tôi cho các phiên và bộ nhớ đệm.

Trân trọng.

+1

Đó là một lựa chọn mà chúng tôi đang xem xét và rất dễ cài đặt. Chỉ có vấn đề là khi một nút chết hoặc khi bộ nhớ cache đầy, các phiên sẽ bị mất. Vì các nút không chết thường xuyên và bộ nhớ cache nhận được đầy đủ có thể được giải quyết với kế hoạch công suất cẩn thận nó có thể là một giải pháp khả thi thực sự. – webgr

+0

@webgr Mất phiên khách hàng thực sự gây phiền nhiễu, nhưng nó thường được chấp nhận. Trên một trong các ứng dụng của tôi, nó rất nguy hiểm, nhưng tôi đang mạo hiểm. Tôi cũng có thể gặp vấn đề với DB của mình. Đó là cùng một loại rủi ro. Amazon tuyên bố rằng EC thực sự đáng tin cậy và đã chuyển đổi dự phòng, nhưng tôi nghĩ bạn có thể mất dữ liệu về sự thất bại. "Đáng tin cậy - Amazon ElastiCache có nhiều tính năng nâng cao độ tin cậy cho các triển khai sản xuất quan trọng, bao gồm phát hiện và khôi phục lỗi tự động. Amazon ElastiCache chạy trên cùng một cơ sở hạ tầng đáng tin cậy được sử dụng bởi các dịch vụ web khác của Amazon." – tvdias