Componente di Monitoraggio dei File

Sfondo:

Workerman è un sistema che funziona in memoria persistente, il che evita la lettura ripetuta del disco e la ricompilazione ripetuta di PHP, al fine di raggiungere la massima prestazione. Pertanto, dopo aver modificato il codice dell'applicazione, è necessario effettuare manualmente un reload o un restart affinché le modifiche abbiano effetto.

Allo stesso tempo, Workerman offre un servizio di monitoraggio degli aggiornamenti dei file, che esegue automaticamente un reload quando viene rilevato un aggiornamento del file, ricaricando il file PHP. Gli sviluppatori possono integrarlo nel progetto e avviarlo insieme al progetto.

Indirizzi per il download del servizio di monitoraggio dei file:

  1. Versione senza dipendenze: https://github.com/walkor/workerman-filemonitor

  2. Versione con dipendenza inotify: https://github.com/walkor/workerman-filemonitor-inotify (è necessario installare l'estensione inotify)

Differenze tra le due versioni:

La versione 1 utilizza un metodo di polling per controllare l'aggiornamento del file ogni secondo,

La versione 2 sfrutta il meccanismo inotify del kernel Linux, che notifica attivamente Workerman quando un file viene aggiornato.

In generale, la prima versione senza dipendenze è sufficiente.

Modo d'uso

Copia la directory Applications/FileMonitor nella directory Applications del tuo progetto.

Se il tuo progetto non ha una directory Applications, puoi copiare il file Applications/FileMonitor/start.php in una posizione a tua scelta nel progetto e includerlo nello script di avvio.

Il componente di monitoraggio monitora di default la directory Applications; se è necessario modificarla, puoi cambiare la variabile $monitor_dir all'interno di Applications/FileMonitor/start.php. È consigliabile che il valore di $monitor_dir sia un percorso assoluto.

Nota:

  • Il sistema Windows non supporta il reload e non può utilizzare questo servizio di monitoraggio.
  • Funziona solo in modalità debug; in modalità daemon non verrà eseguito il monitoraggio dei file (perché non supporta la modalità daemon, consulta la spiegazione qui sotto).
  • Solo i file caricati dopo l'esecuzione di Worker::runAll possono essere aggiornati a caldo, in altre parole, solo i file caricati all'interno del callback onXXX possono essere aggiornati a caldo.

Perché non supporta la modalità daemon?

La modalità daemon è generalmente quella utilizzata per l'esecuzione in ambienti di produzione. Quando si pubblicano versioni in ambienti di produzione, di solito diversi file vengono pubblicati contemporaneamente, e tra i file può esserci una dipendenza. Poiché il trasferimento di più file su disco richiede un certo tempo, potrebbe esserci un momento in cui i file sul disco non sono completi, se in quel momento viene rilevato un aggiornamento del file e si esegue un reload, ci sarà il rischio fatale di errore "file non trovato".

Inoltre, in un ambiente di produzione, a volte si possono correggere bug in tempo reale; se si modifica il codice e si salva direttamente, le modifiche avranno effetto immediatamente, il che potrebbe portare a errori di sintassi rendendo il servizio online non utilizzabile. Il metodo corretto sarebbe quello di salvare il codice e controllare eventuali errori di sintassi usando php -l yourfile.php e solo allora eseguire un reload per aggiornare il codice a caldo.

Se gli sviluppatori hanno davvero bisogno di abilitare il monitoraggio dei file e l'aggiornamento automatico in modalità daemon, possono modificare il codice in Applications/FileMonitor/start.php rimuovendo la condizione della parte Worker::$daemonize.