Avvertenze
Note sull'uso del timer
-
I timer possono essere aggiunti solo nei callback
onXXXX. Si consiglia di impostare i timer globali nel callbackonWorkerStarte i timer specifici per una connessione nel callbackonConnect. -
I compiti programmati aggiunti vengono eseguiti nel processo attuale (non verranno avviati nuovi processi o thread). I compiti pesanti potrebbero influenzare l'esecuzione di altri compiti nel processo attuale, quindi è meglio eseguire i compiti ad alta intensità in processi separati, ad esempio creando uno o più processi Worker.
-
Quando il processo attuale non ha attivato le coroutine swoole/swow, se è occupato con altre attività o se un compito non è completato nel tempo previsto, e nel frattempo è iniziato un nuovo ciclo di esecuzione, attenderà il completamento del compito attuale prima di eseguire il nuovo ciclo. Questo può causare il mancato rispetto dell'intervallo di tempo previsto per il timer. In altre parole, le attività nel processo attuale vengono eseguite in modo seriale, mentre in un contesto a più processi, le attività tra i processi vengono eseguite in parallelo.
-
Si deve prestare attenzione ai compiti programmati impostati in più processi poiché possono causare problemi di concorrenza. Ad esempio, il seguente codice stamperà 5 volte al secondo.
$worker = new Worker(); // 5 processi $worker->count = 5; $worker->onWorkerStart = function(Worker $worker) { // 5 processi, ognuno ha un timer di questo tipo Timer::add(1, function(){ echo "hi\r\n"; }); }; Worker::runAll();Se si desidera che solo un processo esegua il timer, fare riferimento a Timer::add Esempio 2.
-
Potrebbe esserci un margine di errore di circa 1 millisecondo.
-
I timer non possono essere eliminati tra processi, ad esempio un timer impostato dal processo a non può essere direttamente eliminato nel processo b chiamando l'interfaccia Timer::del.
-
Gli ID dei timer tra processi diversi potrebbero ripetersi, ma gli ID dei timer generati all'interno dello stesso processo non si ripeteranno.
-
Modificare l'orario di sistema influenzerà il comportamento del timer, quindi si consiglia di riavviare il sistema dopo aver modificato l'orario.