Heim > Backend-Entwicklung > PHP-Tutorial > Swoole verwendet die Task-Funktion in PHP-fpm/Apache

Swoole verwendet die Task-Funktion in PHP-fpm/Apache

藏色散人
Freigeben: 2023-04-07 07:30:01
nach vorne
3027 Leute haben es durchsucht

Swoole verwendet die Task-Funktion in PHP-fpm/Apache

● Erstellen Sie eine neue RedisServer.php

● Der Code lautet wie folgt:

<?php
use Swoole\Redis\Server;
$server = new Server("127.0.0.1", 9501, SWOOLE_PROCESS );
$server->set(array(
    &#39;task_worker_num&#39; => 32,
    &#39;worker_num&#39; => 1,
    &#39;task_enable_coroutine&#39; => true,
    &#39;heartbeat_check_interval&#39; => 5,
    &#39;heartbeat_idle_time&#39; => 10,
));
$server->setHandler(&#39;LPUSH&#39;, function ($fd, $data) use ($server) {
    $taskId = $server->task($data);
    if ($taskId === false) {
        $server->send($fd, Server::format(Server::ERROR));
    } else {
        $server->send($fd, Server::format(Server::INT, $taskId));
    }
});
$server->on(&#39;Finish&#39;, function($serv, $taskID, $data) {
    $stats = $serv->stats();
    if ($stats[&#39;tasking_num&#39;] > 10) { //tasking_num 当前正在排队的任务数
        echo "剩余任务信息:" . json_encode($serv->stats()) . "\n";
    }
});
$server->on(&#39;Task&#39;, function ($serv, $data) {
    go(function () {
        usleep(50000);
    });
    var_dump($data);
});
$server->start();
Nach dem Login kopieren

Aufgabe in usleep (50000); Simulieren Sie die Ausführungszeit der Aufgabe

● Erstellen Sie eine neue Queue.php

● Der Code lautet wie folgt

<?php
$redis = new Redis;
$redis->connect(&#39;127.0.0.1&#39;, 9501);
$x=1; 
while($x <= 1000) {
  $redis->lpush("myqueue", json_encode(array("hello".$x, "swoole")));
  $x++;
}
Nach dem Login kopieren

Simulieren Sie die Zustellung von 1000 Aufgaben

Nach dem Test ist die Verarbeitung in 1 abgeschlossen Sekunde

Sie können Task folgen. Die Geschwindigkeit der Aufgabenausführung wird angepasst. task_worker_num steuert die Anzahl der gestarteten Prozesse


● Diese Prozesse werden vom Swoole-Boden verwaltet Ebene. Die unterste Ebene erstellt neue Aufgaben, nachdem ein schwerwiegender Fehler auftritt oder der Prozess beendet wird

● Der Maximalwert darf nicht SWOOLE_CPU_NUM * 1000 überschreiten


● Die Verarbeitungszeit einer einzelnen Aufgabe, z. B. 100 ms, wobei der Prozess 1/0,1 = 10 Aufgaben in 1 Sekunde verarbeiten kann

● Geschwindigkeit der Aufgabenbereitstellung, z Beispiel: Pro Sekunde werden 2000 Aufgaben generiert

]

Das obige ist der detaillierte Inhalt vonSwoole verwendet die Task-Funktion in PHP-fpm/Apache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
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