對象和資源的持久化
在傳統的 Web 開發中,PHP 創建的對象、數據、資源等會在請求完畢後全部釋放,導致很難做到持久化。而在 Workerman 中可以輕鬆做到這些。
在 Workerman 中如果想在內存中永久保存某些數據資源,可以將資源放到全局變量中或者類的靜態成員中。
例如下面的代碼:
用一個全局變量 $connection_count 保存一個當前進程的客戶端連接數。
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// 全局變量,保存當前進程的客戶端連接數
$connection_count = 0;
$worker = new Worker('tcp://0.0.0.0:1236');
$worker->onConnect = function(TcpConnection $connection)
{
// 有新的客戶端連接時,連接數+1
global $connection_count;
++$connection_count;
echo "now connection_count=$connection_count\n";
};
$worker->onClose = function(TcpConnection $connection)
{
// 客戶端關閉時,連接數-1
global $connection_count;
$connection_count--;
echo "now connection_count=$connection_count\n";
};