10/10/2018, 11:10
giúp với php ajax chat
mình sắp phải làm php , ajax chat . là 1 part của 1 website nhiều thành viên , mà hok có nhiều kinh nghiệm về phân tích , đánh giá , tính toán để đảm bảo app làm việc tốt khi có nhiều thành viên sử dụng nên mong mọi ng có thể chia sẻ tí.
yêu cầu là chat live , delay từ 1-2 second. user sẽ chọn friend trong user list để chat . nói chung là multi chat.
về phần jquery , giao diện thì ko có j khó khăn.
khó khăn là :
- xây dựng table như thế nào , record nội dung chat ra sao cho hiệu quả ?
- về các thuật toán để lấy dữ liệu như thế nào để hiệu quả nhất , đảm bảo đủ thông tin mà lấy dữ liệu nhan nhất ?
- làm sao đo lường được tốc độ xử lý và lượng dữ liệu truyền tải trên mỗi lần request nhỉ? mình biết tốc độ xử lý nhanh thì tốt , nhưng nếu bắt nó chở quá nặng thì dù nhanh cũng đúi.
- có công nghệ nào hỗ trợ cho chat tool dạng này ko nhỉ?
mình test cái chat tool của facebook thì thấy cực nhanh, hok bik nó có những gì mình có thể làm dc ?
bà con chia sẻ với nhé , thanks
[=========> Bổ sung bài viết <=========]
hiện tại suy nghĩ của mình để lưu chat massage thì lưu trong 1 table.
- khi 1 người gửi 1 câu ,thì gửi lên server và lưu lại table.
- khi friend của người đó request đến thì delete cái massage đó luôn.
như vậy sẽ giảm lượng record trong table thường xuyên nên tránh tình trang table chứa quá nhìu record dẫn đến việc select ko nhanh.
Suy nghĩ thứ 2 là về request chat text. mỗi chat window sẽ lưu lại ID chat cuối cùng, mỗi lần auto request sẽ lấy ID đó và select các chat text mới hơn.
Suy nghĩ thứ 3 là về window chat . sẽ có nhiều window vì user sẽ có thẻ chat nhìu người. mỗi lần chỉ mở 1 window và các window còn lại bị đóng.
- các window đóng sẽ chỉ nhận request cho đến khi nhận dc 1 tin mới từ friend. nó sẽ ko request nữa mà dừng lại cho tới khi user mở window chat bị đóng đó . như vậy sẽ giảm khá nhiều lựong request. vì request sau mỗi 2s.
yêu cầu là chat live , delay từ 1-2 second. user sẽ chọn friend trong user list để chat . nói chung là multi chat.
về phần jquery , giao diện thì ko có j khó khăn.
khó khăn là :
- xây dựng table như thế nào , record nội dung chat ra sao cho hiệu quả ?
- về các thuật toán để lấy dữ liệu như thế nào để hiệu quả nhất , đảm bảo đủ thông tin mà lấy dữ liệu nhan nhất ?
- làm sao đo lường được tốc độ xử lý và lượng dữ liệu truyền tải trên mỗi lần request nhỉ? mình biết tốc độ xử lý nhanh thì tốt , nhưng nếu bắt nó chở quá nặng thì dù nhanh cũng đúi.
- có công nghệ nào hỗ trợ cho chat tool dạng này ko nhỉ?
mình test cái chat tool của facebook thì thấy cực nhanh, hok bik nó có những gì mình có thể làm dc ?
bà con chia sẻ với nhé , thanks
[=========> Bổ sung bài viết <=========]
hiện tại suy nghĩ của mình để lưu chat massage thì lưu trong 1 table.
- khi 1 người gửi 1 câu ,thì gửi lên server và lưu lại table.
- khi friend của người đó request đến thì delete cái massage đó luôn.
như vậy sẽ giảm lượng record trong table thường xuyên nên tránh tình trang table chứa quá nhìu record dẫn đến việc select ko nhanh.
Suy nghĩ thứ 2 là về request chat text. mỗi chat window sẽ lưu lại ID chat cuối cùng, mỗi lần auto request sẽ lấy ID đó và select các chat text mới hơn.
Suy nghĩ thứ 3 là về window chat . sẽ có nhiều window vì user sẽ có thẻ chat nhìu người. mỗi lần chỉ mở 1 window và các window còn lại bị đóng.
- các window đóng sẽ chỉ nhận request cho đến khi nhận dc 1 tin mới từ friend. nó sẽ ko request nữa mà dừng lại cho tới khi user mở window chat bị đóng đó . như vậy sẽ giảm khá nhiều lựong request. vì request sau mỗi 2s.
Bài liên quan
http://en.wikipedia.org/wiki/Comet_%28programming%29
Về csdl nếu có server riêng hoặc VPS thì ko nên dùng mysql, theo mình ứng dụng loại này dùng redis đặc biệt thích hợp.
redis tích hợp vào ajax và php tốt chứ bạn?
redis là csdl, đặc điểm của nó là nằm trong RAM (và đồng bộ vào disk theo chu kỳ do mình thiết lập) nên tốc độ cực nhanh (như memcache bởi cũng h/đ trong RAM - thậm chí nhiều benchmark còn cho thấy nó nhanh hơn cả memcache). Ngoài ra nó hỗ trợ nhiều định dạng dữ liệu (thay vì chỉ là một key-value store như memcache) với nhiều operation hữu ích nên có thể xứ lý dữ liệu trong csdl 1 cách linh hoạt. Nói chung bạn sẽ ko phải lo lắng về vấn đề tốc độ của csdl nếu chọn nó (http://redis.io/topics/benchmarks). Mà trong chat app thì performance là 1 tiêu chí quan trọng hàng đầu.
Vì csdl cho 1 ứng dụng chat ko đòi hỏi nhiều tính năng của một relational DB nên theo mình dùng mysql trong trường hợp này là ko nên. Có rất nhiều giải pháp nosql tốt khác hiện nay.
xx3004@yahoo.com
xx3004@gmail.com
[x]