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

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

藏色散人
藏色散人nach vorne
2019-08-15 14:26:392991Durchsuche

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();

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++;
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Der Neuladevorgang von php-fpmNächster Artikel:Der Neuladevorgang von php-fpm