Maison > développement back-end > tutoriel php > Utilisez Workerman pour compter le nombre de personnes en ligne sur le site en temps réel sous ThinkPHP6

Utilisez Workerman pour compter le nombre de personnes en ligne sur le site en temps réel sous ThinkPHP6

幸运切糕
Libérer: 2020-05-04 10:12:09
original
164 Les gens l'ont consulté

Workerman est un framework de serveur socket PHP open source hautes performances développé uniquement en PHP. Il est largement utilisé dans le développement d'applications mobiles, de serveurs de jeux mobiles, de serveurs de jeux en ligne, de serveurs de salons de discussion, de serveurs de communication matériels, de maisons intelligentes, de l'Internet des véhicules, de l'Internet des objets et d'autres domaines. Prend en charge les connexions longues TCP, prend en charge Websocket, HTTP et d'autres protocoles, ainsi que les protocoles personnalisés. Basé sur Workerman, les développeurs peuvent se concentrer davantage sur le développement de la logique métier et n'ont plus à se soucier du développement sous-jacent de PHP Socket.

Cet article détaille la méthode d'utilisation de composer pour installer l'extension workman sous tp6 afin d'obtenir des statistiques en temps réel du nombre de personnes en ligne.


Installer l'extension think-worker

Pour la méthode d'installation, veuillez vous référer au manuel officiel de thinkphp6 : installation du compositeur

composer require topthink/think-worker
Copier après la connexion


Créer une classe de service Workerman

Créer un fichier de classe <span style="background-color: rgb(255, 255, 255); color : rgb(88, 96, 105) ; famille de polices : -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "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){}
}
Copier après la connexion


<span style=" couleur d'arrière-plan : rgb(255, 255, 255); couleur : rgb(88, 96, 105); famille de polices : -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji" ; taille de police : 16 px ; "><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>Modifier le fichier de configuration du travailleur

Ouvrez configworker_server.php, les parties qui doivent être modifiées sont les suivantes :

&#39;worker_class&#39;   => &#39;app\common\http\Worker&#39;, // 自定义Workerman服务类名 支持数组定义多个服务
Copier après la connexion


Code de test du contrôleur

<?php
namespace app\controller;

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

class Index extends BaseController
{
    public function index()
    {
        return View::fetch();
    }
}
Copier après la connexion


Afficher le code de test

<!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>
Copier après la connexion


Démarrez Workererman

Allez dans le répertoire racine du projet et exécutez la commande suivante :

php think worker:server
Copier après la connexion


Vérifier les résultats statistiques

Utilisez Workerman pour compter le nombre de personnes en ligne sur le site en temps réel sous ThinkPHP6


Les statistiques sont réussies. Ouvrons une autre fenêtre pour voir si le nombre de personnes va augmenter ?

Utilisez Workerman pour compter le nombre de personnes en ligne sur le site en temps réel sous ThinkPHP6

OK, le dernier nombre de personnes a été automatiquement actualisé sur la page Amis, plus vous essayez, plus l'impression sera impressionnante. Ceci termine le tutoriel. J'espère que ça vous plaira !

Ce qui précède sont les détails de l'utilisation de Workerman pour compter le nombre de personnes en ligne sur le site Web en temps réel sous ThinkPHP6. Pour plus d'informations, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
1
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal