2011-12-13 38 views
5

Gần đây tôi đã hoàn thành đơn đăng ký của mình và tôi gặp sự cố lớn. Tôi chỉ cần cho phép 1 người dùng truy cập vào một thời điểm. Có một trang chỉ mục có thể truy cập cho mọi người dùng mọi lúc và nút "bắt đầu". Khi người dùng nhấp vào bắt đầu, khóa ứng dụng và ppl khác cần phải đợi cho đến khi người dùng hoàn tất. Khi người dùng đóng tab/trình duyệt, ứng dụng phải tự động mở khóa. Mỗi người dùng có 5 phút để sử dụng ứng dụng của tôi. Tôi đã giải quyết được một phần vấn đề của mình, nhưng nó vẫn không hoạt động đúng - trên mọi trang web tôi đặt tập lệnh jquery cứ 5 giây lại kích hoạt tệp "extend.php" trên máy chủ (hàm $ .get()). Tệp php sửa đổi tệp time.txt (nó thay đổi nó thành thời gian() + 5) và tập lệnh trên trang intex kiểm tra xem (time()> nội dung time.txt). Vì vậy khi sử dụng đóng tab/trình duyệt, ứng dụng có thể truy cập được. Rõ ràng ứng dụng của tôi cũng dựa trên các phiên (khi người dùng đóng trình duyệt, anh ta mất quyền truy cập). Trên một số máy tính, nó chỉ đơn giản là không hoạt động (có vẻ như jquery không kích hoạt tệp extend.php và nó làm cho ứng dụng của tôi có thể truy cập mọi lúc). Vì vậy, câu hỏi của tôi là: bạn có thấy bất kỳ cách nào khác để giải quyết vấn đề của tôi không?Kiểm tra xem người dùng hiện có trực tuyến hay không (trực tiếp)

The descr có thể lộn xộn nhưng tôi muốn mô tả mọi thứ hoàn hảo;)

Kính trọng.

+1

HĐH/trình duyệt nào không hoạt động. Bắt đầu từ đó và xem liệu có một số điểm chung giữa những người gặp vấn đề hay không. Bạn có thể đang theo đuổi một vấn đề mã thực sự là một vấn đề trình duyệt. – Brian

+0

Bạn đang làm điều đúng về nguyên tắc bởi âm thanh của nó. Điều đầu tiên cần làm là để có được trên một máy tính mà nó không hoạt động, và xem nếu nó ném bất kỳ lỗi trình duyệt có thể nhìn thấy. – graphicdivine

Trả lời

0

Bạn có thể đặt LOCK trên bảng mysql khi người dùng trực tuyến và mở khóa khi họ ngoại tuyến.

Vấn đề duy nhất là nếu mã của bạn quên mở khóa.

+0

Tôi nghĩ đó là vấn đề anh ấy đang cố giải quyết ... –

1

Phương pháp của bạn là OK, nó sẽ hoạt động. Có, node.js hoặc bất kỳ javascript bên máy chủ nào khác có thể được sử dụng để thực hiện tương tự, nhưng có một kịch bản được kích hoạt là giải pháp dễ nhất. Bạn thực sự nên tập trung thời gian của bạn để điều tra thêm về những gì máy nó không hoạt động.

2

Hãy thử sử dụng chức năng dỡ tải jQuery để khi họ nhấp vào nút đóng, trình duyệt web của bạn thực hiện một dòng lệnh cuối cùng trước khi người dùng thoát. Ví dụ:

$(window).unload(function(){ 

    "your php function to unlock the app here" 

}); 

Hy vọng điều này sẽ hữu ích.

1

Nếu bị giới hạn trong 5 phút, sau đó đặt thời gian hết hạn sau 5 phút. Bạn có thể sử dụng một truy cập trong jquery để hiển thị bao nhiêu thời gian có sẵn. Khi nó chạm hết hạn thì thông báo cho người dùng thời gian đã hết. Khi thời gian đã hết hạn hoặc người dùng hoàn tất với ứng dụng cập nhật time.txt thành time() hoặc tuy nhiên bạn thường xử lý nó khi ứng dụng có thể truy cập được. Không bỏ phiếu và cập nhật 1.

Các vấn đề liên quan