Tôi đã tự hỏi làm thế nào để kích hoạt một thông báo nếu một bản ghi mới được chèn vào cơ sở dữ liệu, sử dụng PHP và MySQL.Thông báo cập nhật trực tiếp về các thay đổi cơ sở dữ liệu MYSQL PHP
Trả lời
MySQL hiện có trình kích hoạt và thủ tục được lưu trữ, nhưng tôi không tin rằng họ có bất kỳ cách nào để thông báo cho quy trình bên ngoài, vì vậy, theo tôi biết điều đó là không thể. Bạn sẽ phải thăm dò cơ sở dữ liệu mỗi giây một lần để tìm kiếm các bản ghi mới.
Thậm chí nếu có, điều này giả định rằng quy trình PHP của bạn tồn tại lâu, sao cho nó có thể đủ khả năng để treo xung quanh để có một bản ghi xuất hiện. Cho rằng hầu hết PHP được sử dụng cho các trang web nơi mã chạy và sau đó thoát ra càng nhanh càng tốt, nó không rõ ràng cho dù đó là tương thích với những gì bạn có.
Điều đơn giản nhất có thể là thăm dò ý kiến của DB vài giây một lần và xem liệu các bản ghi mới đã được chèn chưa. Do truy vấn bộ đệm ẩn trong DB nên điều này không ảnh hưởng đáng kể đến hiệu suất của DB.
Nếu tất cả các thay đổi cơ sở dữ liệu của bạn được tạo bởi PHP, tôi sẽ tạo một hàm bao bọc cho mysql_query và nếu kiểu truy vấn là INSERT, REPLACE, UPDATE hoặc DELETE, tôi sẽ gọi một hàm để gửi email tương ứng.
EDIT: Tôi quên đề cập đến nhưng bạn cũng có thể làm một cái gì đó như sau:
if (mysql_affected_rows($this->connection) > 0)
{
// mail(...)
}
Một hôm tôi hỏi trong MySQL diễn đàn nếu sự kiện như trong Firebird hoặc Interbase tồn tại trong MySQL và tôi thấy rằng câu trả lời một ai đó có (tôi thực sự không chắc chắn)
việc kiểm tra này: http://forums.mysql.com/read.php?84,3629,175177#msg-175177
Điều này có thể được thực hiện tương đối dễ dàng sử dụng thủ tục lưu trữ và triggers. Tôi đã tạo ra một màn hình 'Live View' có màn hình cuộn được cập nhật với các sự kiện mới từ bảng sự kiện của tôi. Nó có thể hơi khó sử dụng nhưng một khi nó chạy nhanh.
Bạn có thể tạo trình kích hoạt thay vì chạy khi cập nhật diễn ra. Có thể chạy/thông báo cho một quá trình bên ngoài bằng cách sử dụng một UDF (hàm do người dùng định nghĩa). Không có bất kỳ phương thức dựng sẵn nào làm như vậy, do đó, đó là trường hợp tải một plugin UDF mà sẽ làm điều đó cho bạn.
Google cho 'mysql udf sys_exec' hoặc 'mysql udf ipc'.
- 1. khay thông báo cập nhật cơ sở dữ liệu
- 2. Cập nhật cơ sở dữ liệu MySql bằng PHP thông qua chức năng javascript onClick
- 3. Cập nhật mô hình từ cơ sở dữ liệu (Cơ sở dữ liệu đầu tiên)
- 4. Nhận thông báo về thay đổi cơ sở dữ liệu: có thể xem các mục nhập trong riak không?
- 5. thay đổi nhiều cơ sở dữ liệu mysql cùng một lúc (thay đổi cơ sở dữ liệu SAAS)
- 6. Cập nhật cơ sở dữ liệu Android
- 7. Các chiến lược sao chép dữ liệu từ cơ sở dữ liệu MySQL trực tiếp đến máy chủ dàn dựng
- 8. Cập nhật các phiên bản cơ sở dữ liệu sqlite?
- 9. Thông báo thay đổi cơ sở dữ liệu Oracle và ROWID
- 10. Cơ sở dữ liệu MySQL PHP Các ký tự lạ
- 11. Cập nhật cơ sở dữ liệu trên __destruct()?
- 12. Làm cách nào để truy cập cơ sở dữ liệu mysql trực tuyến trên Android?
- 13. Entitiy Framework: "Cập nhật cơ sở dữ liệu từ Model" thay vì "Tạo cơ sở dữ liệu từ Model"
- 14. Có thể Flyway hoặc Liquibase tạo tập lệnh cập nhật thay vì cập nhật cơ sở dữ liệu trực tiếp không?
- 15. Đồng bộ hóa cơ sở dữ liệu trực tuyến/ngoại tuyến - MySQL/PHP
- 16. Java, cách thay đổi cơ sở dữ liệu hiện tại sang cơ sở dữ liệu khác?
- 17. Công cụ dành cho nhà phát triển để truy cập trực tiếp cơ sở dữ liệu
- 18. Android SimpleCursorAdapter không cập nhật khi thay đổi cơ sở dữ liệu
- 19. Cách cập nhật trực tiếp bản ghi trong cơ sở dữ liệu từ số biểu mẫu (Access 2007)
- 20. Sao lưu cơ sở dữ liệu MySQL
- 21. Cơ sở dữ liệu đích không được cập nhật
- 22. Cập nhật lược đồ cơ sở dữ liệu với hibernate
- 23. Đang cập nhật tất cả các bảng trong một cơ sở dữ liệu MySQL
- 24. Lỗi khi kéo cơ sở dữ liệu mysql trong cơ sở dữ liệu mysql cục bộ
- 25. Chạy cơ sở dữ liệu cập nhật từ Team City
- 26. Thông báo cho dịch vụ WCF của tôi khi cơ sở dữ liệu của tôi được cập nhật
- 27. Cập nhật trường bit sql trong cơ sở dữ liệu
- 28. Cập nhật lược đồ cơ sở dữ liệu
- 29. cơ sở dữ liệu truy cập trực tiếp và dịch vụ web
- 30. Store datetime php trong cơ sở dữ liệu mysql
Rõ ràng là có thể, nhưng với một số loại bổ trợ: http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-22-5-1-10 –