2009-04-13 12 views

risposta

4

MySQL ora dispone di trigger e stored procedure, ma non credo che abbiano alcun modo di notificare un processo esterno, quindi per quanto ne so non è possibile. Dovresti eseguire il polling del database ogni secondo circa per cercare nuovi record.

Anche se lo fosse, questo presuppone che il processo PHP sia di lunga durata, in modo che possa permettersi di rimanere in attesa di un record. Dato che la maggior parte di PHP viene utilizzata per i siti Web in cui il codice viene eseguito e quindi esce più rapidamente possibile, non è chiaro se sia compatibile con ciò che si ha.

+0

Apparentemente è possibile, ma con qualche tipo di componente aggiuntivo: http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-22-5-1-10 –

5

La cosa più semplice è probabilmente eseguire il polling del DB ogni pochi secondi e verificare se sono stati inseriti nuovi record. A causa della cache di query nel DB questo non dovrebbe influire sostanzialmente sulle prestazioni del DB.

2

Se tutte le modifiche al database sono eseguite da PHP, creerei una funzione wrapper per mysql_query e se il tipo di query fosse INSERT, REPLACE, UPDATE o DELETE, chiamerei una funzione per inviare la rispettiva email.

EDIT: Ho dimenticato di dire, ma si potrebbe anche fare qualcosa di simile al seguente:

if (mysql_affected_rows($this->connection) > 0) 
{ 
    // mail(...) 
} 
-1

questo può essere fatto in modo relativamente semplice utilizzando stored procedure e trigger. Ho creato una schermata 'Live View' che ha un display a scorrimento che viene aggiornato con nuovi eventi dalla mia tabella degli eventi. Può essere un po 'complicato, ma una volta che corre è veloce.

2

È possibile creare un trigger che viene eseguito quando si verifica un aggiornamento. È possibile eseguire/notificare un processo esterno utilizzando una UDF (funzione definita dall'utente). Non ci sono metodi incorporati per farlo, quindi è il caso di caricare un plugin UDF che lo farà per te.

Google per "mysql udf sys_exec" o "mysql udf ipc".

Problemi correlati