09/10/2018, 23:51

Bộ đếm thời gian đấu giá chạy trên sever

Hi mọi người, tui đang làm luận văn về trang web đấu giá. Hiện tại, tui đang bị bí chỗ xây dựng một cái module đếm ngược thời gian đấu giá chạy trên sever ( ứng với mỗi sàn đấu giá sẽ có một bộ đếm thời gian cho nó, Khi kết thúc sẽ bắt sự kiện kết thúc và thi hành một fucntion nào đó). Mong mọi người chỉ giáo!!!! thanks.
duongdragonxxx viết 02:06 ngày 10/10/2018
Cần code 1 cái application chạy trên server.
tìm hiểu socket, tcp/ip
amida viết 02:05 ngày 10/10/2018
Chỉ cần dùng hàm time() là đủ
anhhuy_cse viết 02:07 ngày 10/10/2018
Quote Được gửi bởi amida View Post
Chỉ cần dùng hàm time() là đủ
amida có thể nói rõ hơn được không. time() chỉ là lấy time hiện tại, mình vẫn chưa hiểu rõ lắm làm sao có thể xây dựng bộ đếm cho từng sàn đấu giá được. (kiến thức còn nông cạn... hihi)
Shellingfox viết 02:00 ngày 10/10/2018
Quote Được gửi bởi duongdragon*** View Post
Cần code 1 cái application chạy trên server.
tìm hiểu socket, tcp/ip
Làm như vầy là đúng rồi.
Cứ lấy hàm time() để lưu vô Database cho từng sàn khác nhau. Còn cái application sẽ chạy realtime để kiểm tra sàn nào còn thời gian cũng như đã hết thời gian ...
jiSh@n viết 01:55 ngày 10/10/2018
Quote Được gửi bởi Shellingfox View Post
Làm như vầy là đúng rồi.
Cứ lấy hàm time() để lưu vô Database cho từng sàn khác nhau. Còn cái application sẽ chạy realtime để kiểm tra sàn nào còn thời gian cũng như đã hết thời gian ...
Dùng cron đi
TheHeTre viết 01:59 ngày 10/10/2018
Quote Được gửi bởi anhhuy_cse View Post
Hi mọi người, tui đang làm luận văn về trang web đấu giá. Hiện tại, tui đang bị bí chỗ xây dựng một cái module đếm ngược thời gian đấu giá chạy trên sever ( ứng với mỗi sàn đấu giá sẽ có một bộ đếm thời gian cho nó, Khi kết thúc sẽ bắt sự kiện kết thúc và thi hành một fucntion nào đó). Mong mọi người chỉ giáo!!!! thanks.
Phần chữ đậm mới là mục đích chính của câu hỏi. Phần lưu thời gian thì chắc chắn rồi, và chạy thời gian thực (đếm ngược) có thể dùng Javascript để tạo đồng hồ.

Khi hàm javascript này đếm hết giờ và so sánh thời gian thực với thời gian đấu giá (load ra sắn) khi chạy, sẽ thực hiện một Event. Với ý của tôi đơn giản nhất là redirect về URL nào đó, tại URL này thực hiện việc mong muốn (với kiểm tra điều kiện time và referer)

@jiSh@n có thể cho biết dùng Cron như thế nào không?
babyinternet viết 01:59 ngày 10/10/2018
Dùng Cron :
Lưu lại thời gian bắt đầu và thời gian phiên đấu giá còn hiệu lực, trạng thái phiên đấu giá.
Dùng Cron để kiểm tra quá trình đấu giá theo thời gian. Hết phiên, chuyển trạng thái của phiên về close để ngừng đấu giá (kiểu như ngừng active, đơn giản vậy thôi).
Dùng Cron thì 1,2,3,4,5,6,7,8,9,10 phiên còn chấp nhận được, nhiều quá khiến cron hoạt động nhiều tốn tài nguyên hệ thống.
---------------------------------------------------------
Đơn giản nhất là:
Lưu lại: thời gian bắt đầu phiên đấu giá, thời gian hết hiệu lực của phiên đấu giá.

Danh sách phiên đang tổ chức đấu giá: sử dụng query để lấy ra danh sách các phiên đấu giá có thời gian kết thúc lớn hơn thời gian hiện tại.

Show phiên đấu giá:
- Kiểm tra phiên đấu giá còn hiệu lực.
- Tạo 1 đoạn Javascript đếm ngược thời gian (thời gian hết phiên - thời gian hiện tại). Khi function của JS trả về 0 (hết thời gian đấu giá). Gọi Ajax reload lại trang (Hoặc reload trang bình thường cũng được).

Hết !
anhhuy_cse viết 01:57 ngày 10/10/2018
thanks mọi người. Mình sẽ thử xem.
duongdragonxxx viết 02:06 ngày 10/10/2018
Trên Unix/Linux bạn thường nghe đến cái tên Cron...
Vậy Cron là cái gì nhỉ? Trước hết Cron là một chương trình. Do sự tiện dụng và cần thiết của nó lên đã được nâng lên làm deadmon.
Vậy nó có chức năng gì ? Chắc bạn không lạ gì chương trình Scheduling Agent chuyên được dùng để thực hiện các tác vụ theo định kỳ đã được lên kế hoạch và thời gian trước. Thì Cron sẽ thay bạn thực hiện tính năng này trong Unix/Linux.

Thường thì cron được cài đặt mặc định và chạy trên các hệ thống Unix/Linux rồi. Nếu hệ thống của bạn chưa được cài đặt Cron thì bạn có thể Dowload nó từ: http://www.freshmeat.net/ Và cần cho khởi động nó như một deadmon trên hệ thống của bạn bằng lệnh:
root@localhost#: crond start

Bây giờ chúng ta cùng bắt tay cấu hình cho Cron. Để sử dụng Cron bạn phải, bạn cần một file cấu hình dạng text, còn gọi là file "lịch" (để lên lịch chạy của các chương trình). Ngoài ra bạn sẽ phải dùng thêm chương trình crontab (có sau khi cài cron) để đăng ký file lịch với hệ thống, xem thông tin về file lịch của user...

Bạn có thể đặt tên cho file lịch là jobs.txt hoặc schedule.txt hay tên gì đó cũng được, miễn nó là file text. Cấu trúc của file lịch như sau:

* File lịch gồm có 2 phần, phần đầu là phần cấu hình, có dạng TÊN_BIẾN = GIÁ TRỊ
* Phần thứ hai là lịch trình chạy của các chương trình
* Các chú thích bắt đầu bằng ký tự #
(bạn xem thêm thông tin qua lệnh man crontab)

Phần cấu hình của file lịch (có thể) như sau:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=abc
HOME=/ # run-parts

Dòng đầu tiên cho biết là bạn dùng shell bash để chạy các chương trình, dòng thứ 2 thiết lập đường dẫn cho các chương trình (tuỳ chọn), dòng thứ 3 biểu thị rằng output của các chương trình sẽ được gởi tới email cho user abc (tuỳ chọn, mặc định sẽ gởi email tới cho user chủ sở hữu của file lịch, nếu bạn không muốn gởi email thì bạn đặt MAILTO=""), dòng thứ 4 sẽ báo cho cron biết rằng phải cd về thư mục gốc trước khi thi hành lệnh.

Phần lịch trình chạy các chương trình có dạng như sau:
phút giờ ngày tháng thứ chương_trình_cần_chạy
Phút có giá trị từ 0 đến 59 hoặc là *
Giờ có giá trị từ 0 đến 23 hoặc *
Ngày có giá trị 1 đến 31 hoặc *
Tháng có giá trị từ 1 đến 12 hoặc *
Thứ có giá trị 0 (Chủ nhật), 1 (thứ hai)...6 (thứ 7) hoặc *

Ví dụ bạn muốn chạy chương trình abc vào lúc 2g1' sáng ngày 12 tháng 5 (bất kể thứ) thì lịch chạy như sau:
1 2 12 5 * abc
(* biểu thị everything, tức là bất kể thứ nào)

Nếu bạn muốn chạy 1 file tên def trong thư mục /bin vào 15g chiều vào chủ nhật (bất kể ngày tháng) thì lịch chạy như sau:
0 15 * * 0 /bin/def

và nếu bạn muốn chạy 1 chương trình tên xyz vào mỗi giờ trong ngày (bắt đầu ở phút thứ 8 của giờ đó) thì:
8 * * * * xyz

còn nếu bạn muốn chương trình cứ 3 ngày chạy 1 lần vào đúng 4g10' sáng? thì đây:
10 4 */3 * * tên_chương_trình
(*/3 biểu thị cứ cách 3 đơn bị thì thực hiện 2 lần, ở ví dụ trên 1 đơn vị là 1 ngày nên 3 ngày chương trình sẽ chạy 1 lần)

Nếu bạn muốn chạy chương trình ngày 3 lần (cứ 8 tiếng đồng hồ thì chạy 1 lần) vào lúc 13 phút hàng tuần (trừ Thứ 7 và Chủ nhật) thì:
13 */8 * * 1-5 tên_chương_trình
(1-5 biểu thị trong giới hạn từ 1 đến 5 thì thực hiện, ở ví dụ trên 1 là thứ 2, 5 là thứ 6, 1-5 biểu thị từ thứ 2 đến thứ 6)

Và cuối cùng, sau khi soạn thảo và lưu lai file lịch ở dạng text. Bạn đăng ký file lịch với hệ thống qua lệnh crontab:
crontab schedules.txt

Mỗi user trên hệ thống linux của bạn có thể tạo 1 file lịch khác nhau và đăng ký với hệ thống, 2 user khác nhau sẽ có file lịch khác nhau và không sợ bị ghi dè lên nhau.

lệnh crontab -l sẽ liệt kê file lịch mà bạn đã đăng ký với hệ thống. Nếu bạn đăng ký nhiều file lịch, thì file sau sẽ ghi đè lên file trước.
lệnh crontab -r sẽ rút tên file lịch mà bạn đã đăng ký trên hệ thống ra (không đăng ký lịch nữa).
Bài liên quan
0