ホームページ  >  記事  >  バックエンド開発  >  SwooleはPHP-fpm/apacheでタスク関数を使用します

SwooleはPHP-fpm/apacheでタスク関数を使用します

藏色散人
藏色散人転載
2019-08-15 14:26:392903ブラウズ

SwooleはPHP-fpm/apacheでタスク関数を使用します

## 新しい RedisServer.php

# を作成します。コードは次のとおりです。

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

task inside usleep (50000); タスクの実行時間をシミュレートします

● 新しい Queue.php

## を作成します。コードは次のとおりです。

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

1000 個のタスク配信をシミュレートします

##テスト後、1 で処理されます。 2番目

#タスクをフォローできます タスクの実行速度を調整します task_worker_num は起動するプロセスの数を制御します

● これらのプロセスは swoole によって管理されます最下層。最下層は、致命的なエラーが発生するかプロセスが終了した後、新しいタスクを再作成します。Process


task_worker_num

● 最大値は、 SWOOLE_CPU_NUM * 1000を超えない

#● 1つのタスクの処理時間(100ミリ秒など)。プロセスは1秒間に1/0.1=10個のタスクを処理できます。
#● タスク配信速度、たとえば、2000 個のタスク

# 1 秒あたり 2000/10=200 が生成されるため、task_worker_num => ; 200 に設定する必要があり、200 個のタスク プロセスを有効にします

関連する推奨事項: [

PHP]チュートリアル###]###

以上がSwooleはPHP-fpm/apacheでタスク関数を使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。