Persistenza di Oggetti e Risorse

Nello sviluppo web tradizionale, gli oggetti, i dati e le risorse creati da PHP vengono completamente liberati al termine della richiesta, il che rende difficile la persistenza. In Workerman, invece, è possibile gestire facilmente questi aspetti.

In Workerman, se si desidera mantenere permanentemente in memoria alcune risorse di dati, è possibile memorizzare le risorse in una variabile globale o in un membro statico della classe.

Per esempio, nel codice seguente:

Si utilizza una variabile globale $connection_count per memorizzare il numero di connessioni dei client nell'attuale processo.

<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// Variabile globale che salva il numero di connessioni dei client nell'attuale processo
$connection_count = 0;

$worker = new Worker('tcp://0.0.0.0:1236');

$worker->onConnect = function(TcpConnection $connection)
{
    // Quando si connette un nuovo client, aumentare il conteggio delle connessioni di 1
    global $connection_count;
    ++$connection_count;
    echo "now connection_count=$connection_count\n";
};

$worker->onClose = function(TcpConnection $connection)
{
    // Quando il client si disconnette, diminuire il conteggio delle connessioni di 1
    global $connection_count;
    $connection_count--;
    echo "now connection_count=$connection_count\n";
};

Per riferimento all'ambito delle variabili PHP:

https://php.net/manual/zh/language.variables.scope.php