Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie workerman, um unter ThinkPHP6 in Echtzeit die Anzahl der Personen zu zählen, die auf der Website online sind
Workerman ist ein Open-Source-Hochleistungs-PHP-Socket-Server-Framework, das ausschließlich in PHP entwickelt wurde. Es wird häufig in der Entwicklung von mobilen Apps, mobilen Spieleservern, Online-Spieleservern, Chatroom-Servern, Hardware-Kommunikationsservern, Smart Homes, dem Internet der Fahrzeuge, dem Internet der Dinge und anderen Bereichen eingesetzt. Unterstützt lange TCP-Verbindungen, Websocket, HTTP und andere Protokolle sowie benutzerdefinierte Protokolle. Basierend auf Workerman können sich Entwickler mehr auf die Entwicklung der Geschäftslogik konzentrieren und müssen sich nicht mehr um die zugrunde liegende Entwicklung von PHP Socket kümmern.
In diesem Artikel wird detailliert beschrieben, wie Composer zum Installieren der Workerman-Erweiterung unter tp6 verwendet wird, um Echtzeitstatistiken über die Anzahl der Online-Personen zu erhalten.
Think-Worker-Erweiterung installieren
Informationen zur Installationsmethode finden Sie im offiziellen Handbuch von thinkphp6: Composer-Installation
composer require topthink/think-worker
Workerman-Serviceklasse erstellen
Klassendatei erstellen <span style="background-color: rgb(255, 255, 255); color : rgb(88, 96, 105); Schriftfamilie: -apple-system, BlinkMacSystemFont, „Segoe UI“, Helvetica, Arial, serifenlos, „Apple Color Emoji“, „Segoe UI Emoji“; 16px;">app/ common/http/Worker.php<code><span style="background-color: rgb(255, 255, 255); color: rgb(88, 96, 105); font-family: -apple-system, BlinkMacSystemFont, " segoe ui helvetica arial sans-serif color emoji font-size:>app/common/http/Worker.php</span>
<?php namespace app\common\http; use think\worker\Server; use Workerman\Lib\Timer; use think\facade\Cache; class Worker extends Server { //监听7373端口 protected $socket = 'http://0.0.0.0:7373'; //在线人数,初始为0 protected $connection_count = 0; public function __construct(){ parent::__construct(); } public function onConnect($connection) { //客户端连接成功,在线人数+1 ++$this->connection_count; } public function onWorkerStart($worker) { //定时器,每隔1秒执行一次,根据自己需求修改 Timer::add(1, function() use($worker){ $data = json_encode([ 'online' => $this->connection_count, ]); //把最新的在线人数循环推送给已连接的客户端 foreach($worker->connections as $connection){ $connection->send($data); } //缓存最新在线人数,页面渲染时,会先从缓存中读取,提高用户体验 Cache::set('online', $this->connection_count); }); } public function onClose($connection) { //客户端断开,在线人数-1 $this->connection_count--; } public function onError($connection, $code, $msg){} }
<span style=" Hintergrundfarbe: rgb(255, 255, 255); Farbe: rgb(88, 96, 105); Schriftfamilie: -apple-system, BlinkMacSystemFont, „Segoe UI“, Helvetica, Arial, sans-serif, „Apple Color Emoji“, „Segoe UI Emoji“; Schriftgröße: 16px;“><code><span style=" background-color: rgb color: font-family: blinkmacsystemfont ui helvetica arial sans-serif color emoji font-size:></span>
Ändern Sie die Worker-Konfigurationsdatei
Öffnen Sie configworker_server. php, die Teile, die geändert werden müssen, sind wie folgt:
'worker_class' => 'app\common\http\Worker', // 自定义Workerman服务类名 支持数组定义多个服务
Controller-Testcode
<?php namespace app\controller; use app\BaseController; use think\facade\View; class Index extends BaseController { public function index() { return View::fetch(); } }
Testcode anzeigen
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>workerman实时统计在线人数测试</title> </head> <body> <div> <span>在线人数:</span> <span id="online">{$online}</span> </div> {load href="/static/js/jquery.min.js} <script> ws = new WebSocket("ws://localhost:7373"); ws.onmessage = function(e) { var data = JSON.parse(e.data); $('#online').text(data.online + ' 人'); } </script> </body> </html>
Workererman starten
Gehen Sie in das Stammverzeichnis des Projekts und führen Sie den folgenden Befehl aus:
php think worker:server
Statistische Ergebnisse überprüfen
Die Statistiken sind erfolgreich, um zu sehen, ob die Anzahl der Personen steigt.
OK, die aktuelle Anzahl der Personen wurde automatisch auf der Seite aktualisiert. Je mehr Sie versuchen, desto beeindruckender wird der Eindruck sein. Ich hoffe es gefällt euch!
Im Folgenden finden Sie Einzelheiten zur Verwendung von workerman, um die Anzahl der Personen, die auf der Website online sind, in Echtzeit unter ThinkPHP6 zu zählen. Weitere Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Das obige ist der detaillierte Inhalt vonVerwenden Sie workerman, um unter ThinkPHP6 in Echtzeit die Anzahl der Personen zu zählen, die auf der Website online sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!