javascript - Tạo một ứng dụng web giống cờ đam trực tiếp với PHP, JS, CSS và HTML?
Tôi muốn tạo một ứng dụng trực tiếp giống như cờ caro, hoạt động như sau: Sẽ có nhiều biểu tượng/ảnh đại diện hiển thị trên bề mặt giống bàn cờ này. Tôi muốn có một hộp lệnh bên dưới bàn cờ này, hoặc một loại giao diện nào khác, cho phép người dùng điều khiển một ảnh đại diện nhất định và thực hiện các hành động. Nhiều người dùng sẽ sử dụng cùng một lúc, và tôi sẽ có thể xem các thay đổi/hành động của người dùng khác trên bàn cờ.
Điều tôi đang băn khoăn là: cách tốt nhất để làm việc này là gì? Tôi đã nắm được cách sử dụng HTML, CSS và JS, nhưng chưa biết phương pháp lưu trữ dữ liệu. Tôi biết rằng, sử dụng PHP, tôi có thể chọn giữa việc lưu trữ dựa trên file, MYSQL, hoặc một phương pháp khác. Tôi cần biết phương án nào tốt hơn, vì tôi không muốn gặp phải tình trạng máy chủ chậm, thời gian phản hồi kém, hoặc vấn đề khác, đặc biệt trong trường hợp này khi các hành động sẽ được thực hiện cứ mỗi 2 giây, bởi nhiều người dùng.
Tôi đã làm những việc tương tự trước đây, nhưng tôi muốn nghe cách người khác sẽ xử lý nó (lời khuyên, v.v.) từ những lập trình viên có kinh nghiệm hơn.
Câu trả lời #1
Nghe có vẻ như một dự án tuyệt vời cho node.js!
Để làm rõ, node.js là một triển khai javascript phía máy chủ. Những gì bạn muốn là một ứng dụng dựa trên comet (một ứng dụng khách dựa trên web nhận các đẩy từ phía máy chủ thay vì khách liên tục truy vấn máy chủ), điều mà node.js thực sự giỏi.
Các cuộc gọi Ajax truyền thống yêu cầu khách hàng của bạn phải liên tục truy vấn máy chủ để lấy dữ liệu. Điều này tạo ra chi phí lớn cho cả khách hàng và máy chủ. Việc cho phép máy chủ gửi yêu cầu trực tiếp đến khách hàng mà không cần khách hàng liên tục hỏi sẽ giải quyết vấn đề chi phí và tạo ra một giao diện phản hồi nhanh hơn. Điều này được thực hiện bằng cách giữ các kết nối khách hàng không đồng bộ trên máy chủ và chỉ trả về khi máy chủ có dữ liệu để phản hồi. Khi máy chủ phản hồi với dữ liệu, một kết nối khác ngay lập tức được tạo và giữ bởi máy chủ cho đến khi dữ liệu sẵn sàng được gửi.
Bạn có thể thực hiện điều tương tự với PHP, nhưng tôi không quen thuộc lắm với PHP và các ứng dụng loại Comet.
Số lượng người dùng và chi phí lưu trữ sẽ ảnh hưởng đến lựa chọn giữa tệp và cơ sở dữ liệu của bạn. Nếu bạn dự định có hơn một vài người dùng, tôi sẽ giữ nguyên dùng cơ sở dữ liệu. Có một số tùy chọn NoSQL có sẵn, nhưng theo kinh nghiệm của tôi, MySQL nhanh hơn và đáng tin cậy hơn nhiều so với những tùy chọn đó.
Chúc bạn may mắn với dự án của mình!
http://vi.wikipedia.org/wiki/Comet_%28programming%29
http://www.nodejs.org/
http://zenmachine.wordpress.com/2010/01/31/node-js-and-comet/
http://socket.io/ - trừu tượng hóa lớp giao tiếp với khách hàng của bạn dựa trên khả năng của họ (LongPolling, WebSockets, v.v.)
Câu trả lời #2
MySQL và XCache !!!!
Hãy chắc chắn rằng bạn sử dụng các câu lệnh đã định nghĩa sẵn để MySQL không cần biên dịch lại SQL. Ngoài ra, memtables có thể được sử dụng để sử dụng lưu trữ trong bộ nhớ
Tất nhiên, hãy sử dụng các chỉ mục một cách thích hợp.
Nếu 'gamestate' không quan trọng lắm, bạn thậm chí có thể lưu mọi thứ trong XCache. Hãy nhớ rằng XCache không lưu dữ liệu một cách bền vững (sau khi Apache khởi động lại)