Nei precedenti articoli “PHP: un socket TCP per acquisire dati dal GPS Tracker GPS-102 compatibile OpenGTS” (prima, seconda e terza parte), ho descritto come implementare un socket TCP in PHP per acquisire i dati GPS da un tracker di tipo TK-102 (e compatibili).
Lo script però era progettato per singolo processo, cioè non poteva servire più di una connessione alla volta e non era dunque in grado di gestire connessioni concorrenti.
E’ invece molto utile che un socket server di questo tipo sia in grado di gestire connessioni concorrenti in modo da prendere in carico più GPS tracker contemporaneamente. Fortunatamente il linguaggio PHP supporta la programmazione multi-processo attraverso l’utilizzo di fork()
. In questo modo il processo padre chiamato in causa da una nuova connessione genera un processo figlio che condivide le variabili e le risorse e rimane libero di accettare nuove connessioni.