Prefazione

Workerman, contenitore per applicazioni PHP ad alte prestazioni

Che cos'è Workerman?

Workerman è un contenitore per applicazioni PHP ad alte prestazioni sviluppato in puro PHP e open source.

Workerman non è un reinvenzione della ruota; non è un framework MVC, ma un framework di servizio più basso livello e generico, che puoi usare per sviluppare proxy tcp, proxy di tunneling, server di giochi, server di posta, server ftp, e persino un version di redis in PHP, un database in PHP, un nginx in PHP, un php-fpm in PHP, e così via. Si può dire che Workerman rappresenta un'innovazione nel campo di PHP, liberando gli sviluppatori dal vincolo che PHP possa fare solo WEB.

In effetti, Workerman è simile a una versione di nginx in PHP, con un core basato su multiprocesso + Epoll + IO non bloccante. Ogni processo di Workerman può mantenere decine di migliaia di connessioni concorrenti. Poiché rimane in memoria, non dipende da contenitori come Apache, nginx, o php-fpm, e offre prestazioni straordinarie. Supporta TCP, UDP, UNIXSOCKET, connessioni persistenti, Websocket, HTTP, WSS, HTTPS e vari protocolli personalizzati. Ha timer, client socket asincroni, Redis asincroni, HTTP asincrono, e molti componenti ad alte prestazioni per le code di messaggi.

Alcuni ambiti di applicazione di Workerman

A differenza dei tradizionali framework MVC, Workerman può essere utilizzato non solo per lo sviluppo web, ma ha anche ambiti di applicazione molto più ampi, come comunicazione in tempo reale, IoT, giochi, gestione dei servizi, altri server o middleware. Questo sicuramente amplia notevolmente l'orizzonte degli sviluppatori PHP. Attualmente ci sono davvero pochi sviluppatori PHP in questi settori. Se vuoi avere un vantaggio tecnico nel campo di PHP, non sei soddisfatto di fare solo operazioni CRUD ogni giorno, o vuoi svilupparti verso una carriera da architetto o esperto tecnico, Workerman è un framework che vale la pena di imparare. Consigliamo agli sviluppatori di non solo usarlo, ma di sviluppare progetti open source unici basati su Workerman, per migliorare le proprie competenze e aumentare la propria influenza, come ad esempio Beanbun, un framework di web crawler multi-process, che ha ricevuto molte recensioni positive dopo il suo lancio.

Alcuni ambiti di applicazione di Workerman sono i seguenti:

  1. Comunicazione in tempo reale
    Ad esempio chat istantanee su web, invio di messaggi istantanei, mini programmi di WeChat, invio di messaggi su app mobili, invio di messaggi su software PC, e così via.
    [Esempi workerman-chat chat room, web message push, chat room Xiao Kedou]

  2. Internet delle cose
    Ad esempio comunicazione tra Workerman e stampanti, comunicazione con microcontrollori, braccialetti intelligenti, case intelligenti, biciclette condivise, ecc.
    [Casi di clientela come Yilianyun, Yipoke Shidai, ecc.]

  3. Server di gioco
    Ad esempio giochi da tavolo, giochi MMORPG, ecc. [Esempio browserquest-php]

  4. Servizi HTTP
    Ad esempio scrivere interfacce HTTP ad alte prestazioni, siti web ad alte prestazioni. Se vuoi creare servizi o siti web basati su HTTP, ti raccomandiamo vivamente webman

  5. Servizi SOA
    Utilizzando Workerman per incapsulare varie unità funzionali del business esistente per fornire un'interfaccia uniforme al pubblico, raggiungendo così un sistema a bassa accoppiamento, facile manutenzione, alta disponibilità e scalabilità. [Esempi workerman-json-rpc, workerman-thrift]

  6. Altri software server
    Ad esempio GatewayWorker, PHPSocket.IO, proxy http, proxy sock5, componente di comunicazione distribuita, componente di condivisione di variabili distribuite, coda di messaggi, server DNS, WebServer, server CDN, server FTP, ecc.

  7. Componenti
    Ad esempio redis asincrono, client http asincrono, client mqtt IoT, coda di messaggi workerman/redis-queue, workerman/stomp, workerman/rabbitmq, componente di monitoraggio file, e molti altri componenti sviluppati da terzi, ecc.

Chiaramente, i framework MVC tradizionali hanno difficoltà a realizzare tutte queste funzionalità, ed è per questo che Workerman è nato.

Filosofia di Workerman

Estremamente semplice, stabile, ad alte prestazioni, distribuito.

Estremamente semplice

La semplicità è bellezza; il core di Workerman è estremamente semplice, composto da pochi file PHP e espone solo alcune interfacce, rendendolo molto facile da imparare. Tutte le altre funzionalità vengono estese tramite componenti.

Workerman dispone di una documentazione completa + una homepage autorevole + una comunità attiva + diversi QQ group con migliaia di membri + numerosi componenti ad alte prestazioni + moltissimi esempi, tutto ciò rende l'utilizzo di Workerman molto più agevole per gli sviluppatori.

Stabile

Workerman è stato open source per diversi anni ed è utilizzato su larga scala da molte aziende quotate in borsa, ed è super stabile. Alcuni servizi non sono stati riavviati per oltre due anni e continuano a funzionare rapidamente. Nessun core dump, nessuna perdita di memoria, nessun bug.

Ad alte prestazioni

Poiché Workerman rimane in memoria e non dipende da apache/nginx/php-fpm, non ha sovraccarichi di comunicazione tra i contenitori e PHP, né i costi di inizializzazione e distruzione per ogni richiesta, offre prestazioni eccezionali, superiori di molte volte rispetto ai tradizionali framework MVC. Sotto PHP7, il test di carico con ab QPS può essere addirittura superiore a un nginx separato.

Distribuito

Non è più l'era in cui si lavora da soli; anche il server più potente ha dei limiti. La distribuzione su più server è la soluzione ideale. Workerman fornisce direttamente una soluzione di comunicazione distribuita a lungo termine GatewayWorker framework, aggiungere server richiede solo una semplice configurazione e avvio, il codice di business non ha bisogno di modifiche, e la capacità del sistema aumenta moltiplicato. Se stai sviluppando applicazioni TCP a lungo termine, ti consiglio di usare direttamente GatewayWorker, che è un pacchetto di Workerman, fornendo interfacce più ricche e potenti capacità di gestione distribuita per le applicazioni a lungo termine.

Ambito del manuale

Versioni Workerman 3.x - 5.x

Utenti Windows (da leggere)

Workerman supporta sia sistemi Linux che Windows. La versione Windows di Workerman non dipende da alcuna estensione, è sufficiente configurare le variabili di ambiente PHP, la guida all'installazione e gli avvisi per la versione Windows sono disponibili in Windows Utenti da leggere.

Client

Il protocollo di comunicazione di Workerman è aperto e personalizzabile, quindi, in teoria, Workerman può comunicare con client su qualsiasi piattaforma che utilizzi qualsiasi protocollo. Quando gli utenti sviluppano un client, possono completare la comunicazione con il server in base al rispettivo protocollo di comunicazione.