Tôi đang tìm một giải pháp tương tự như phương pháp inotify khi xem tệp để thay đổi. Tôi biết rằng tôi có thể xem tệp binlog của cơ sở dữ liệu mysql và chạy truy vấn để chọn ra các kết quả mới nhưng điều đó có vẻ rất kém hiệu quả và không phù hợp; cũng đơn giản là làm khối lượng truy vấn trong một vòng lặp chờ kết quả mới.Có cách nào để xem cơ sở dữ liệu mysql cho các thay đổi bằng cách sử dụng perl không?
Trả lời
Nếu bạn thêm TRIGGER vào (các) bảng mà bạn quan tâm, bạn có thể sử dụng để cảnh báo ứng dụng xem. Bạn có thể làm điều đó theo một số cách:
- Tạo bảng kiểm tra trong cơ sở dữ liệu và kích hoạt ghi thông tin liên quan tại đó; và có ứng dụng xem cuộc thăm dò của bạn bảng kiểm toán cho các mục mới. Bạn vẫn đang bỏ phiếu, nhưng theo cách được kiểm soát sẽ không đánh máy chủ quá khó.
- Có trình kích hoạt call an external app thông qua UDF.
Đó là những gì [tôi đã bình luận cách đây 6 ngày] (http://stackoverflow.com/q/4418598#comment-4820725) như đã có câu trả lời. Thưởng thức tiền thưởng của bạn. – daxim
FWIW, tôi đã thêm câu trả lời này trước khi tôi nhận thấy nhận xét của bạn (tôi đã upvote); và giải pháp được đề xuất đầu tiên của tôi khác với giải pháp của bạn. Tôi thực sự không phải là đạo văn. –
@daxim: Nếu bạn muốn tiền thưởng - bạn nên đăng nhận xét của mình làm câu trả lời! ;-) – Brad
Theo như bảng MyISAM, bạn có thể xem information_schema.TABLES.UPDATE_TIME
. Điều đó sẽ giúp bạn tránh khỏi việc bỏ phiếu cho tất cả các bảng mà bạn quan tâm. Đối với InnoDB, xem binlog là điều tốt nhất tôi có thể nghĩ đến.
+1 cho information_schema. TABLES.UPDATE_TIME – DVK
Cách tiếp cận khác là thực hiện đẩy/tín hiệu thay vì cuộc thăm dò ý kiến của DB. Có bất cứ điều gì quá trình cập nhật cơ sở dữ liệu, thông báo mã Perl của bạn rằng một bản cập nhật đã được thực hiện thông qua bất kỳ IPC nào bạn chọn (heck, một tệp nhật ký được nối thêm với tên của bảng đang được thay đổi có thể làm thủ thuật đủ tốt).
Điều này đặc biệt hiệu quả nếu cập nhật một khối lượng khá hiếm/thấp nhưng thời gian phản ứng với chúng phải nhanh chóng.
Một lợi ích bổ sung là tính di động - hoạt động đối với bất kỳ chương trình phụ trợ MySQL nào hoặc cho bất kỳ công cụ DB nào khác.
Rất tiếc, đây không phải là tùy chọn vì cơ sở dữ liệu được cập nhật bởi một số chương trình bên thứ ba khác mà tôi đang sử dụng và tập lệnh perl mà tôi đang viết không cập nhật cơ sở dữ liệu. – Drake
- 1. Sử dụng AJAX để xem cơ sở dữ liệu SQL cho các thay đổi
- 2. Java, cách thay đổi cơ sở dữ liệu hiện tại sang cơ sở dữ liệu khác?
- 3. thay đổi nhiều cơ sở dữ liệu mysql cùng một lúc (thay đổi cơ sở dữ liệu SAAS)
- 4. Có cách nào để nghe những thay đổi trong một bảng cơ sở dữ liệu MySQL bằng cách sử dụng Java và JDBC không?
- 5. CakePHP Cách thay đổi kết nối cơ sở dữ liệu
- 6. Làm cách nào để xóa cơ sở dữ liệu MySQL?
- 7. Liquibase - cách tạo một thay đổi cho cơ sở dữ liệu hiện có
- 8. Có cách nào để thay đổi chuỗi kết nối trong cơ sở dữ liệu trước không?
- 9. Làm cách nào để nghe các thay đổi cơ sở dữ liệu SQL Server
- 10. Phân tích dữ liệu XML bằng cách sử dụng php để đưa vào cơ sở dữ liệu mysql
- 11. Làm cách nào để sử dụng LINQ với cơ sở dữ liệu MySql trên Mono?
- 12. Cách thay thế tệp cơ sở dữ liệu sqlite hiện có bằng tệp cơ sở dữ liệu mới trong android
- 13. Chuyển đổi tệp BibTex sang mục cơ sở dữ liệu bằng cách sử dụng Python
- 14. Làm cách nào để sử dụng Rails/Devise mà không có cơ sở dữ liệu?
- 15. Tạo một cơ sở dữ liệu MySQL mới bằng cách sử dụng Workbench
- 16. Làm cách nào để thay đổi chủ sở hữu của cơ sở dữ liệu SQL Server?
- 17. Cách sử dụng nhiều cơ sở dữ liệu trong ứng dụng Rails Sử dụng cơ sở dữ liệu
- 18. Sao lưu cơ sở dữ liệu MySQL
- 19. Làm cách nào để chuyển dữ liệu giữa 2 cơ sở dữ liệu MySQL?
- 20. Hiển thị cơ sở dữ liệu/bảng MySQL bằng cách sử dụng REST
- 21. Lưu trữ địa chỉ IP trong cơ sở dữ liệu MySQL bằng cách sử dụng PHP
- 22. Làm thế nào để thay đổi cơ sở dữ liệu MySQL thành UTC?
- 23. Cần hỗ trợ truy cập cơ sở dữ liệu mysql bằng cách sử dụng node.js
- 24. Cách tốt nhất để chuyển đổi cơ sở dữ liệu mysql thành cơ sở dữ liệu sqlite là gì?
- 25. làm cách nào tôi có thể xuất cơ sở dữ liệu mysql bằng ssh?
- 26. Có cách nào để không phá vỡ mã nếu các cột trong cơ sở dữ liệu thay đổi không?
- 27. Nhập tệp csv lớn vào cơ sở dữ liệu mysql bằng cách sử dụng php
- 28. Tìm nạp các hàng trong bảng cơ sở dữ liệu MySQL bằng cách sử dụng MySQL C API và C++
- 29. Cách thay đổi thư mục cơ sở dữ liệu mysql trên WAMP
- 30. Công cụ tạo tải bằng cách sử dụng dữ liệu mẫu cơ sở dữ liệu
http://stackoverflow.com/questions/3501346/how-do-i-hook-into-an-event-triggered-once-a-mysql-query-is-true – daxim