Verwenden Sie workerman, um unter ThinkPHP6 in Echtzeit die Anzahl der Personen zu zählen, die auf der Website online sind

幸运切糕
Freigeben: 2020-05-04 10:12:09
Original
147 Leute haben es durchsucht

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
Nach dem Login kopieren


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, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px;">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 = &#39;http://0.0.0.0:7373&#39;;
    //在线人数,初始为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([
                &#39;online&#39;    => $this->connection_count,
            ]);
            //把最新的在线人数循环推送给已连接的客户端
            foreach($worker->connections as $connection){
                $connection->send($data);
            }
            //缓存最新在线人数,页面渲染时,会先从缓存中读取,提高用户体验
            Cache::set(&#39;online&#39;, $this->connection_count);
        });
    }

    public function onClose($connection)
    {
        //客户端断开,在线人数-1
        $this->connection_count--;
    }

    public function onError($connection, $code, $msg){}
}
Nach dem Login kopieren


<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(255, 255, 255); color: rgb(88, 96, 105); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px;"></span>Ändern Sie die Worker-Konfigurationsdatei

Öffnen Sie configworker_server. php, die Teile, die geändert werden müssen, sind wie folgt:

&#39;worker_class&#39;   => &#39;app\common\http\Worker&#39;, // 自定义Workerman服务类名 支持数组定义多个服务
Nach dem Login kopieren


Controller-Testcode

<?php
namespace app\controller;

use app\BaseController;
use think\facade\View;

class Index extends BaseController
{
    public function index()
    {
        return View::fetch();
    }
}
Nach dem Login kopieren


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);
            $(&#39;#online&#39;).text(data.online + &#39; 人&#39;);
        }
    </script>

</body>
</html>
Nach dem Login kopieren


Workererman starten

Gehen Sie in das Stammverzeichnis des Projekts und führen Sie den folgenden Befehl aus:

php think worker:server
Nach dem Login kopieren


Statistische Ergebnisse überprüfen

Verwenden Sie workerman, um unter ThinkPHP6 in Echtzeit die Anzahl der Personen zu zählen, die auf der Website online sind


Die Statistiken sind erfolgreich, um zu sehen, ob die Anzahl der Personen steigt.

Verwenden Sie workerman, um unter ThinkPHP6 in Echtzeit die Anzahl der Personen zu zählen, die auf der Website online sind

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!

Verwandte Etiketten:
1
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage