PHP  »  Articoli  »  Programmazione Php 

IPC: gestire i processi di sistema con PHP

di: Marco Bonzanini     18 Marzo 2004

Introduzione

Alcuni precedenti articoli ci hanno mostrato come PHP possa essere utilizzato non soltanto come linguaggio strettamente legato al web, ma anche in altri ambiti: ad esempio possiamo creare programmi da eseguire tramite Una shell in PHP oppure possiamo creare programmi dotati di un'interfaccia grafica grazie all'uso di Introduzione a PHP-GTK. Anche in questo articolo analizzeremo un argomento che si discosta un po' dalla programmazione web, andando a muovere i primi passi verso la creazione e la gestione di processi concorrenti e comunicanti utilizzando il linguaggio PHP.

Prima di cominciare, è opportuno notare che focalizzeremo la nostra attenzione su un ambiente Unix-like (i codici di esempio sono stati testati su GNU/Linux, ma funzionano anche su altri sistemi Unix), in quanto alcune delle estensioni proposte non sono supportate da Windows. Inoltre, i codici sono stati pensati per essere eseguiti da riga di comando e non all'interno di una pagina web: il manuale stesso sconsiglia di effettuare operazioni legate alla gestione dei processi all'interno di un web server.

I Processi e l'Inter-Process Communication (IPC)

Una semplice introduzione teorica è doverosa per capire in quale direzione ci stiamo muovendo. Questi aspetti possono essere approfonditi utilizzando i riferimenti proposti nel paragrafo di chiusura.

Con il termine processo indichiamo un'istanza di un programma in esecuzione: negli attuali sistemi operativi, abbiamo solitamente più programmi in esecuzione contemporaneamente, i quali necessitano di risorse (CPU, memoria, ...) ed eventualmente possono condividere informazioni. La presenza di più processi viene gestita tramite un apposito meccanismo di creazione, sincronizzazione e terminazione degli stessi. Dal momento che le risorse della macchina sono comunque limitate, i processi se ne contendono l'utilizzo, e per comunicare usano una serie di possibilità messe a disposizione dal sistema operativo. La nascita di un processo si ha con la "clonazione" di un altro processo, operazione definita fork: il processo generatore viene chiamato padre, mentre il processo generato viene chiamato figlio. Ogni processo viene identificato da un numero intero, il pid (Process ID). In un sistema Unix, il comando ps ci consente di ottenere varie informazioni sui processi in esecuzione.

La sigla IPC sta per Inter-Process Communication ed indica un insieme di meccanismi che consentono a processi in esecuzione sulla stessa macchina di comunicare e sincronizzarsi. Tipicamente, parlando di IPC si ha a che fare con pipe o fifo, memoria condivisa, code di messaggi e semafori.

A cosa ci serve l'IPC?

PHP non è sempre la scelta migliore: difficilmente potremo sostituire Apache con un web server scritto da noi in PHP, anche se la cosa è comunque fattibile. Se abbiamo bisogno di un semplice programma server, per una piccola rete interna o anche per una macchina stand-alone, sicuramente l'utilizzo di PHP può rivelarsi utile in termini di tempi di sviluppo, senza penalizzare eccessivamente le prestazioni.

È possibile mettere in comunicazione i nostri script PHP con programmi esterni, oppure possiamo utilizzare risorse di sistema, come la memoria condivisa, che in alcune situazioni velocizzano determinate operazioni.

Guide PHP

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

27 Febbraio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

28 Marzo 2012 a Roma
Disponibilità: 7 Posti