Heim PHP-Framework Workerman Was sind die Schritte zur Verwendung von Workerman?

Was sind die Schritte zur Verwendung von Workerman?

Dec 12, 2019 am 09:49 AM
workerman Nutzungsschritte

Was sind die Schritte zur Verwendung von Workerman?

Erstellen Sie einen gemeinsamen DAEMON

$worker = new Worker();
$worker::$pidFile = $config['pid'];
$worker::$logFile = $config['log'];
$worker->name = $config['title'];
$worker->count = $config['num'];
$worker->onWorkerStart = function($worker){
    //执行一个回调函数
    call_user_func('******');
};
Worker::runAll();
Nach dem Login kopieren

Erstellen Sie eine geplante Aufgabe (unterstützt die zweite Ebene)

<?php  
use \Workerman\Worker;  
use \Workerman\Lib\Timer;  
require_once &#39;./Workerman/Autoloader.php&#39;;  
$task = new Worker();  
// 开启多少个进程运行定时任务,注意多进程并发问题  
$task->count = 1;  
$task->onWorkerStart = function($task)  
{  
    // 每1秒执行一次 支持小数,可以精确到0.001,即精确到毫秒级别  
    $time_interval = 1;  
    Timer::add($time_interval, function()  
    {  
        echo "****\n";  
    });  
};  
Worker::runAll();
Nach dem Login kopieren

PHP sendet Nachrichten in Echtzeit an den Client

1. Erstellen Sie einen Websocket-Worker, um lange Client-Verbindungen aufrechtzuerhalten.

2 Text-Worker im Worker

3. Der Websocket-Worker und der Text-Worker sind derselbe Prozess und können problemlos die Client-Verbindung teilen

4. Ein unabhängiges PHP-Backend-System kommuniziert über das Textprotokoll Text Worker-Kommunikation

5. Text Worker betreibt Websocket-Verbindung, um den Daten-Push abzuschließen

push.php

<?php
use Workerman\Worker;
require_once &#39;./Workerman/Autoloader.php&#39;;
// 初始化一个worker容器,监听1234端口
$worker = new Worker(&#39;websocket://0.0.0.0:1234&#39;);
/*
* 注意这里进程数必须设置为1,否则会报端口占用错误
* (php 7可以设置进程数大于1,前提是$inner_text_worker->reusePort=true)
*/
$worker->count = 1;
// worker进程启动后创建一个text Worker以便打开一个内部通讯端口
$worker->onWorkerStart = function($worker)
{
// 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符
$inner_text_worker = new Worker(&#39;text://0.0.0.0:5678&#39;);
$inner_text_worker->onMessage = function($connection, $buffer)
{
// $data数组格式,里面有uid,表示向那个uid的页面推送数据
$data = json_decode($buffer, true);
$uid = $data[&#39;uid&#39;];
// 通过workerman,向uid的页面推送数据
$ret = sendMessageByUid($uid, $buffer);
// 返回推送结果
$connection->send($ret ? &#39;ok&#39; : &#39;fail&#39;);
};
// ## 执行监听 ##
$inner_text_worker->listen();
};
// 新增加一个属性,用来保存uid到connection的映射
$worker->uidConnections = array();
// 当有客户端发来消息时执行的回调函数
$worker->onMessage = function($connection, $data)
{
global $worker;
// 判断当前客户端是否已经验证,既是否设置了uid
if(!isset($connection->uid))
{
// 没验证的话把第一个包当做uid(这里为了方便演示,没做真正的验证)
$connection->uid = $data;
/* 保存uid到connection的映射,这样可以方便的通过uid查找connection,
* 实现针对特定uid推送数据
*/
$worker->uidConnections[$connection->uid] = $connection;
return;
}
};
listen

// 当有客户端连接断开时
$worker->onClose = function($connection)
{
global $worker;
if(isset($connection->uid))
{
// 连接断开时删除映射
unset($worker->uidConnections[$connection->uid]);
}
};
// 向所有验证的用户推送数据
function broadcast($message)
{
global $worker;
foreach($worker->uidConnections as $connection)
{
$connection->send($message);
}
}
// 针对uid推送数据
function sendMessageByUid($uid, $message)
{
global $worker;
if(isset($worker->uidConnections[$uid]))
{
$connection = $worker->uidConnections[$uid];
$connection->send($message);
return true;
}
return false;
}
// 运行所有的worker
Worker::runAll();
Nach dem Login kopieren

Back-End-Dienst starten

php push.php start -d
Nach dem Login kopieren

Front-End-Code

var ws = new WebSocket(&#39;ws://127.0.0.1:1234&#39;);
ws.onopen = function(){
var uid = &#39;uid1&#39;;
ws.send(uid);
};
ws.onmessage = function(e){
alert(e.data);
};
Nach dem Login kopieren

PHP-Back-End-Code

// 建立socket连接到内部推送端口
$client = stream_socket_client(&#39;tcp://127.0.0.1:5678&#39;, $errno, $errmsg, 1);
// 推送的数据,包含uid字段,表示是给这个uid推送
$data = array(&#39;uid&#39;=>&#39;uid1&#39;, &#39;percent&#39;=>&#39;88%&#39;);
// 发送数据,注意5678端口是Text协议的端口,Text协议需要在数据末尾加上换行符
fwrite($client, json_encode($data)."\n");
// 读取推送结果
echo fread($client, 8192);
Nach dem Login kopieren

Erstellen Sie einen einfachen Webserver

use \Workerman\Worker;
use \Workerman\WebServer;
require_once __DIR__ . &#39;/Workerman/Autoloader.php&#39;;
// 这里监听8080端口,如果要监听80端口,需要root权限,并且端口没有被其它程序占用
$webserver = new WebServer(&#39;http://0.0.0.0:8080&#39;);
// 类似nginx配置中的root选项,添加域名与网站根目录的关联,可设置多个域名多个目录
$webserver->addRoot(&#39;www.example.com&#39;, &#39;/your/path/of/web/&#39;);
$webserver->addRoot(&#39;blog.example.com&#39;, &#39;/your/path/of/blog/&#39;);
// 设置开启多少进程
$webserver->count = 4;
Worker::runAll();
Nach dem Login kopieren

Die chinesische PHP-Website bietet eine große Anzahl kostenloser Workerman-Einführungs-Tutorials, zum Lernen ist jeder herzlich willkommen!

Das obige ist der detaillierte Inhalt vonWas sind die Schritte zur Verwendung von Workerman?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Schritte zur Verwendung des Win10-Simulators_Win10-Simulator-Tutorial Schritte zur Verwendung des Win10-Simulators_Win10-Simulator-Tutorial Mar 20, 2024 pm 12:40 PM

Viele Benutzer installieren gerne die PC-Version des Android-Emulators auf ihren Computern, damit sie verschiedene mobile Spiele und Anwendungen auf ihren Computern ausführen können, aber es gibt immer noch einige Leute, die nicht wissen, wie man ihn verwendet. Werfen wir einen Blick darauf wie man den Win10-Emulator verwendet. 1. Laden Sie zunächst den Thunderbolt-Simulator herunter, installieren Sie ihn und öffnen Sie ihn auf dem Simulator-Desktop. In der oberen rechten Ecke des Game Centers befindet sich ein Suchfeld. 2. Klicken Sie auf das Suchfeld und geben Sie den Namen des Spiels ein, das Sie suchen möchten. 3. Klicken Sie in den Suchergebnissen auf Installieren. 4. Warten Sie geduldig und das Spiel wird im Emulator installiert. Sie können das Spielsymbol auch sehen, wenn Sie zum Desktop zurückkehren. Klicken Sie, um das Spiel zu starten.

Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Nov 08, 2023 pm 06:02 PM

Um das Hochladen und Herunterladen von Dateien in Workerman-Dokumenten zu implementieren, sind spezifische Codebeispiele erforderlich. Einführung: Workerman ist ein leistungsstarkes PHP-Framework für die asynchrone Netzwerkkommunikation, das einfach, effizient und benutzerfreundlich ist. In der tatsächlichen Entwicklung sind das Hochladen und Herunterladen von Dateien häufige Funktionsanforderungen. In diesem Artikel wird erläutert, wie das Workerman-Framework zum Implementieren des Hochladens und Herunterladens von Dateien verwendet wird, und es werden spezifische Codebeispiele aufgeführt. 1. Datei-Upload: Unter Datei-Upload versteht man die Übertragung von Dateien vom lokalen Computer auf den Server. Folgendes wird verwendet

Was ist besser, Swoole oder Workerman? Was ist besser, Swoole oder Workerman? Apr 09, 2024 pm 07:00 PM

Swoole und Workerman sind beide leistungsstarke PHP-Server-Frameworks. Swoole ist für seine asynchrone Verarbeitung, hervorragende Leistung und Skalierbarkeit bekannt und eignet sich für Projekte, die eine große Anzahl gleichzeitiger Anfragen und einen hohen Durchsatz verarbeiten müssen. Workerman bietet die Flexibilität sowohl des asynchronen als auch des synchronen Modus mit einer intuitiven API, die sich besser für Benutzerfreundlichkeit und Projekte eignet, die ein geringeres Parallelitätsvolumen bewältigen.

So implementieren Sie die grundlegende Verwendung von Workerman-Dokumenten So implementieren Sie die grundlegende Verwendung von Workerman-Dokumenten Nov 08, 2023 am 11:46 AM

Einführung in die Implementierung der grundlegenden Verwendung von Workerman-Dokumenten: Workerman ist ein leistungsstarkes PHP-Entwicklungsframework, mit dem Entwickler problemlos Netzwerkanwendungen mit hoher Parallelität erstellen können. In diesem Artikel wird die grundlegende Verwendung von Workerman vorgestellt, einschließlich Installation und Konfiguration, Erstellung von Diensten und Überwachungsports, Bearbeitung von Clientanfragen usw. Und geben Sie entsprechende Codebeispiele an. 1. Installieren und konfigurieren Sie Workerman. Geben Sie in der Befehlszeile den folgenden Befehl ein, um Workerman zu installieren: c

Workerman-Entwicklung: So implementieren Sie Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Workerman-Entwicklung: So implementieren Sie Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Nov 08, 2023 am 08:03 AM

Workerman-Entwicklung: Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Zusammenfassung: In diesem Artikel wird erläutert, wie Sie mit dem Workerman-Framework eine Echtzeit-Videoanruffunktion basierend auf dem UDP-Protokoll implementieren. Wir werden ein tiefgreifendes Verständnis der Eigenschaften des UDP-Protokolls erlangen und anhand von Codebeispielen zeigen, wie man eine einfache, aber vollständige Echtzeit-Videoanrufanwendung erstellt. Einführung: In der Netzwerkkommunikation sind Echtzeit-Videoanrufe eine sehr wichtige Funktion. Beim herkömmlichen TCP-Protokoll kann es bei der Implementierung von Videoanrufen mit hoher Echtzeitgeschwindigkeit zu Problemen wie Übertragungsverzögerungen kommen. Und UDP

So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem Nov 07, 2023 pm 01:16 PM

Für die Verwendung von Workerman zum Aufbau eines hochverfügbaren Lastausgleichssystems sind spezifische Codebeispiele erforderlich. Im Bereich der modernen Technologie müssen mit der rasanten Entwicklung des Internets immer mehr Websites und Anwendungen eine große Anzahl gleichzeitiger Anforderungen verarbeiten. Um eine hohe Verfügbarkeit und Leistung zu erreichen, ist das Lastausgleichssystem zu einer der wesentlichen Komponenten geworden. In diesem Artikel wird erläutert, wie Sie mit dem PHP-Open-Source-Framework Workerman ein Hochverfügbarkeits-Lastausgleichssystem erstellen und spezifische Codebeispiele bereitstellen. 1. Einführung in WorkermanWorke

So implementieren Sie die Reverse-Proxy-Funktion im Workerman-Dokument So implementieren Sie die Reverse-Proxy-Funktion im Workerman-Dokument Nov 08, 2023 pm 03:46 PM

Für die Implementierung der Reverse-Proxy-Funktion im Workerman-Dokument sind spezifische Codebeispiele erforderlich. Einführung: Workerman ist ein leistungsstarkes PHP-Framework für die Netzwerkkommunikation mit mehreren Prozessen, das umfangreiche Funktionen und leistungsstarke Leistung bietet und in der Web-Echtzeitkommunikation weit verbreitet ist Service-Szenarien. Unter anderem unterstützt Workerman auch die Reverse-Proxy-Funktion, mit der Lastausgleich und statisches Ressourcen-Caching realisiert werden können, wenn der Server externe Dienste bereitstellt. In diesem Artikel wird erläutert, wie Sie Workerman zum Implementieren der Reverse-Proxy-Funktion verwenden.

So implementieren Sie die Timer-Funktion im Workerman-Dokument So implementieren Sie die Timer-Funktion im Workerman-Dokument Nov 08, 2023 pm 05:06 PM

So implementieren Sie die Timer-Funktion im Workerman-Dokument Workerman ist ein leistungsstarkes PHP-Framework für die asynchrone Netzwerkkommunikation, das eine Fülle von Funktionen bereitstellt, einschließlich der Timer-Funktion. Verwenden Sie Timer, um Code innerhalb bestimmter Zeitintervalle auszuführen. Dies eignet sich sehr gut für Anwendungsszenarien wie geplante Aufgaben und Abfragen. Als nächstes werde ich detailliert vorstellen, wie die Timer-Funktion in Workerman implementiert wird, und spezifische Codebeispiele bereitstellen. Schritt 1: Workerman installieren Zuerst müssen wir Worker installieren

See all articles