2009-04-13 34 views

Trả lời

4

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ó.

+0

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 –

5

Đ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.

2

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(...) 
} 
0

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

-1

Đ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.

2

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'.

Các vấn đề liên quan