Tôi đang làm việc trên một cái gì đó tương tự như pastebin (vâng, nó là rằng chung) nhưng cho phép chỉnh sửa nhiều người dùng. Vấn đề rõ ràng là nhiều người dùng đang cố chỉnh sửa cùng một tệp. Tôi đang suy nghĩ dọc theo các dòng khóa xuống khi một người dùng đang làm việc trên nó (nó không phải là giải pháp tốt nhất, nhưng tôi không cần bất cứ điều gì quá phức tạp), nhưng để ngăn chặn/cảnh báo người dùng tôi rõ ràng sẽ cần hệ thống để theo dõi các phiên chỉnh sửa của mỗi người dùng. Làm việc với cơ sở dữ liệu và ajax, tôi đang nghĩ đến hai giải pháp.Theo dõi các phiên của người dùng để ngăn chặn việc sửa đổi xung đột
Đầu tiên sẽ có trang chỉnh sửa ping máy chủ tại một khoảng thời gian tùy ý, nói một phút và nó sẽ cập nhật mục nhập phiên chỉnh sửa trong db. Sau đó, lần tiếp theo yêu cầu chỉnh sửa tập lệnh, nó sẽ kiểm tra ping gần đây nhất và nếu gần đây nhất là một thời gian tùy ý khác, hãy nói năm phút, sau đó chúng tôi giả định rằng người dùng trước đó đã bỏ và tệp có thể được chỉnh sửa lại. Tất nhiên, vấn đề với phương pháp này là giả định rằng người dùng trước đó đã bỏ qua chỉ đơn giản là một giả định. Anh ta có thể có kết nối wi-fi không ổn định và chỉ bỏ ra mười phút, tất cả thời gian với cửa sổ vẫn mở.
Tất nhiên, để xử lý vấn đề này, chúng tôi phải yêu cầu máy chủ phản hồi yêu cầu mới từ các phiên đã đóng trước đó với lỗi, yêu cầu phía khách hàng chỉ ra cho người dùng biết rằng phiên của anh ấy đã kết thúc , và sau đó đối phó với nó bằng cách, tiết kiệm nó như là một tập tin trên máy chủ và yêu cầu người dùng tự kết hợp nó, vv Nó đi mà không nói rằng điều này là khá khủng khiếp cho người dùng cuối.
Vì vậy, tôi đã nghĩ đến một giải pháp khác. Cũng có thể có sự kiện unload
để kích hoạt khi phiên của người dùng kết thúc, nhưng tôi không thể chắc chắn liệu điều này có hoạt động đáng tin cậy hay không.
Có ai có giải pháp nào khác, thanh lịch hơn cho vấn đề này không?
Đó là một câu trả lời tuyệt vời, nhưng thực sự không phải những gì tôi đang tìm kiếm: phần chỉnh sửa cộng tác thực sự nhỏ đối với phần chia sẻ, xin lỗi nếu tôi không làm rõ điều đó. Việc áp dụng giải pháp này sẽ làm cho mọi thứ trở nên phức tạp hơn * phức tạp hơn - quá phức tạp cho một ứng dụng chia sẻ văn bản/mã đơn giản. Số lượng các trường hợp rìa tôi cần phải xem xét sẽ là ... khá không thể cho sự phức tạp của tương tác người dùng ở đây. Tuy nhiên, câu trả lời tuyệt vời, và đã cho tôi một cái gì đó để mull trong khi tôi chờ đợi cho câu trả lời tiếp theo ... –