Persistenz von Objekten und Ressourcen
In der traditionellen Webentwicklung werden die von PHP erstellten Objekte, Daten, Ressourcen usw. nach Abschluss der Anfrage vollständig freigegeben, was eine Persistenz erschwert. In Workerman kann dies jedoch problemlos erreicht werden.
Wenn man in Workerman bestimmte Datenressourcen dauerhaft im Speicher speichern möchte, kann man die Ressourcen in einer globalen Variable oder als statisches Mitglied einer Klasse ablegen.
Zum Beispiel der folgende Code:
Speichert die Anzahl der aktuellen Client-Verbindungen eines Prozesses in einer globalen Variable $connection_count.
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// Globale Variable, die die Anzahl der Client-Verbindungen des aktuellen Prozesses speichert
$connection_count = 0;
$worker = new Worker('tcp://0.0.0.0:1236');
$worker->onConnect = function(TcpConnection $connection)
{
// Wenn eine neue Client-Verbindung hergestellt wird, wird die Verbindungserhöhung um 1
global $connection_count;
++$connection_count;
echo "now connection_count=$connection_count\n";
};
$worker->onClose = function(TcpConnection $connection)
{
// Wenn der Client die Verbindung schließt, wird die Verbindung um 1 verringert
global $connection_count;
$connection_count--;
echo "now connection_count=$connection_count\n";
};