Thời gian lặp lại

Thời gian lặp lại

Bởi minh vu tran -
Số lượng các câu trả lời: 4

Trong quiz,khi có sự cố (đóng trình duyệt,…) các câu hỏi thì phục hồi đúng,còn thời gian thì nó bị mất (không lấy lại thời gian lúc gặp sự cố),em muốn lấy lại thời gian lúc trình duyệt bị đóng chứ không muốn bị trừ thời gian khi đăng nhập thi lại,hiện tại em đang nghiên cứu vấn đề này nhưng gặp khó khăn không biết phải sửa lại chỗ nào.

Xin anh Vũ Hùng và mọi người giúp dùm em.

Trung bình điểm đánh giá: -
Để phản hồi tới minh vu tran

Lấy Thời gian lặp lại là không thể vào thời điểm hiện tại (tính đến Moodle 1.5.2)

Bởi Vu Hung -

Chào Vũ,

Như em đã thấy Gustav trả lời là không thể lấy thời gian lúc trình duyệt đóng.

Anh bỏ ra một khoảng thời gian khá lớn nghiên cứu vấn đề của em và theo cách nhìn nhận của anh, đúng là không thể được.

Anh sẽ giải thích cho em như sau. Như em biết trong Web có hai thành phần quan trọng là trình duyệt và Web server. Trình duyệt sẽ thay mặt người dùng gửi các yêu cầu tới chương trình chạy trên Web server (tình huống này là Moodle).

Chương trình sẽ gửi yêu cầu của người dùng lên Web server khi có các sự kiện phát sinh (nhấn chuột, gõ phím, etc). Khi trình duyệt bị đóng hoặc mất điện đều không phát sinh sự kiện để chương trình có thể biết và gửi yêu cầu lên phía server để xử lý.

Do đó, em sẽ không thể lấy được thời gian lúc trình duyệt bị đóng. Thay vào đó module quiz lấy dựa vào thời gian lúc người dùng bắt đầu kiểm tra và thời gian bài thi đó sẽ diễn ra để đưa ra các tính toán tương ứng (làm bài trong bao lâu, đã hết giờ chưa, có làm bài quá thời gian qui định không. etc).

Em còn vấn đề gì thắc mắc nữa không?

Thân ái,

Vũ Hùng

Để phản hồi tới minh vu tran

Trả lời: Thời gian lặp lại

Bởi Vu Hung -

Em có nghĩ ra một cách để biết browser của sinh viên là tắt hay mở bằng cách dùng session,chúng ta sẽ gán cho mỗi máy một session (có thể gán bằng chính username đăng nhập),chúng ta sẽ kiểm tra các session này, nếu session của máy nào bị hủy thì browser của máy đó bị đóng.(đếm hết các session)

Đây cũng chỉ là ý nghĩ của em thôi,không biết có được không (vì em thấy moodle dùng cookie chứ không phải session).Xin anh Hùng góp ý giúp em với,vì em rất cần xử lý vấn đề backup thời gian này gấp.


Chào Vũ,

Anh sẽ giải thích cho em kĩ hơnDùng session để lưu thông tin ở phía client (dùng browser) là cách làm thường xuyên của các công nghệ Web khác nhau PHP, ASP.NET và Java. Đa số trường hợp session đều dựa trên cookies để lưu thông tin trên phía máy client. Cookies được sử dụng trong session.

Vấn đề đặt ra với giải pháp của em là khi nào server biết session của phía client bị huỷ. Khi server phát hiện ra session bị huỷ (bằng một cách nào đó)  thì thời gian đã bị trễ mất rồi (không phải lúc đóng browser). Anh nghĩ giải pháp như vậy cũng chưa được.

Em phải đưa ra giải pháp mà bắt được đúng  thời điểm (sự kiện) trình duyệt bị đóng và gửi lên cho phía server để lưu thời gian.

Em nghĩ thế nào? Anh sẽ tiếp tục hổ trợ em.

Thân ái,

Vũ Hùng

Để phản hồi tới minh vu tran

Trả lời: Thời gian lặp lại

Bởi Vu Hung -

Trong file attempt.php, em muốn thực hiện câu update table để thiết lập lại thời gian bắt đầu thi (timestart) với đúng user, quiz và id; câu lệnh của em như sau:

$attempt->timestart=$buffer;//gán timestart bằng một giá trị nào đó.

update_record('quiz_attempts', $attempt);//update table

hoặc:

set_field('quiz_attempts','timestart',$buffer,'quiz', $quiz->id,'userid', $USER->id,'id',160);// id em gán tĩnh

Cả hai câu lệnh này em tham khảo trong các module khác, nhưng em không thể thực hiện được.

Em chỉnh sửa rất nhiều nhưng không được.

Nếu anh biết câu lệnh (trong các hàm của moodle) nào dùng để update xin giúp em với.

Hai hàm em dùng hoàn toàn chính xác, đều dùng để cập nhật database và đặt trong lib/datalib.php.

Anh có một số nhận xét như sau:

1. Hàm set_field em dùng thừa quá số tham số cho phép. Hàm này cho phép cập nhật 1 trường field1 với tối đa hai điều kiện field2 và field3. Hàm của em có đến 4 field.

Signature: function set_field($table, $newfield, $newvalue, $field1, $value1, $field2='', $value2='', $field3='', $value3='')

2. Hàm update_record em giường như dùng đúng theo mô tả. Do đó anh cần biết thêm thông báo của môi trường chạy (Run-Time Environment) về kết quả thực hiện hàm này. Em có thể chụp màn hình hoặc gửi thông báo sau khi thực hiện hàm này lên đây không?

Chúc thành công,

Vũ Hùng