10/10/2018, 10:55

Đồng bộ hai csdl với GET

Chào các bạn. Hiện tại mình có hai csdl đặt ở hai host khác nhau. Vì lý do chi phí nên phải đặt một cái ở trong nước một cái ở mỹ. Cái host ở mỹ làm các nhiệm vụ nặng và tạo csdl. Mình định dùng cronjob chạy một file a.php với phương thức get để chuyển dữ liệu tự động từ host mỹ về tới một file b.php trên host Việt, nhiệm vụ file b.php là đẩy get lấy về vào csdl trên host Việt, để user truy cập tốc độ nhanh hơn. Tuy nhiên Get chỉ giới hạn 255 ký tự. Mình cũng đã tìm hiểu về POST nhưng nó ko làm tự động được.
Mong Các bạn có thể chỉ giúp mình cách tăng số ký tự truyền cho phương thức get hoặc một phương thức nào đó để đồng bộ hai csdl.
Cảm ơn các bạn.
thuyduongcd viết 12:58 ngày 10/10/2018
Ai lại làm như vậy. Vừa phí tiền vừa hoạt động không hiệu quả. Cho dù có dùng cronjob thì cũng không thể đồng bộ tho thời gian thực nếu không muốn host die.
Thứ hai, GET phụ thuộc vào url mà url có giới hạn nên GET cũng có giới hạn của nó. Đó là lẽ đương nhiên và không thể thay đổi.
Thứ ba, muốn dùng cronjob với POST thì tìm hiểu về curl. Ví dụ, tạo file a.php trên host Việt. Dùng cronjob gọi file này theo định kỳ. File này sẽ dùng url gọi tới file b.php trên host Mỹ. File b.php sẽ lấy trong database và trả về cho file a. File a sẽ dựa vào kết quả trả về mà lưu vào trong CSDL ở host Việt.
fsviet viết 13:00 ngày 10/10/2018
sao kô dùng service nhểi. Mà nếu IP 2 máy cố định thì dùng hẳn socket đêi
jacobleq viết 13:04 ngày 10/10/2018
Gợi ý của thuyduongcd làm mình nhớ tới xml. Quên mất, sau đó dùng dom đọc là đc.
Tuy nhiên bạn FSVIET có thể nói thêm về cách dùng service và socket được không.
fsviet viết 12:58 ngày 10/10/2018
về bản chất khi xử lý dữ liệu kiểu này cũng theo batch, và mỗi batch xử lý là 1 con số cụ thể vừa đủ. Nên mình đề nghị dùng web service. Ngoài ra web service hỗ trợ bảo mật có thể dùng SOAP.
IP 2 máy cố định thì việc sử dụng socket truyền tải dữ liệu sẽ nhanh hơn rất nhiều (cái nì mới có ý định thế, nhưng nếu data không lớn, kô nhiều thì cũng kô nên, mà tui chúa ghét socket, làm việc debug cực mệt ).
À, mà để cho tiện dùng WCF, dev = WCF thì client thik dùng service hay socket đều được
ledangkhoalt viết 13:02 ngày 10/10/2018
Trong trường hợp này dùng XML để chuyển dữ liệu là hợp lý và đơn giản nhất.
Dùng webservice thì cũng chuyển XML qua thôi nhưng có đồng bộ và có chuần hơn thôi
danglangthang viết 13:07 ngày 10/10/2018
Được gửi bởi ledangkhoalt
Trong trường hợp này dùng XML để chuyển dữ liệu là hợp lý và đơn giản nhất.
Dùng webservice thì cũng chuyển XML qua thôi nhưng có đồng bộ và có chuần hơn thôi
Là sao không hiểu ???
thuyduongcd viết 12:55 ngày 10/10/2018
webservice nào mà chẳng dùng XML để tương tác dữ liệu.
Thật ra với trường hợp này không cần dùng cron chi cho phí băng thông. Vì khi dùng cron thì cứ "đến hẹn lại lên", đến giờ là chạy không cần biết database có thay đổi hay không. Nếu mà đặt khoảng cách quá dài, database sẽ khó đồng bộ, nếu đặt quá ngắn thì server sẽ chịu không nổi và tốn băng thông.
Có một cách khác là "chỉ gọi khi có thay đổi". Ví dụ ở host Mỹ, khi database thêm 1 record, sau khi thực hiện thêm xong, đồng thời gọi đến 1 trang ở host Việt yêu cầu cập nhật record vừa thêm. Tương tự, khi DB ở host Việt có thay đổi (xóa, sửa gì đó) thì cũng gửi yêu cầu đến trang ở Host Mỹ yêu cầu thay đổi theo. Như vậy chẳng cần cronjob làm gì.
fsviet viết 13:02 ngày 10/10/2018
@thuyduongcd: chính xác roài đấy, bên kia nhấn nút save 1 cái thì đồng thời call service bên này save luôn là ok
ghetlamminh viết 12:59 ngày 10/10/2018
thế bên A ấn save lưu thành công gọi service bên B để lưu nhưng... đứt mạng thì phải làm sao??? rollback bên A chăng?.
Bài liên quan
0