国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請問阻塞調(diào)用的子進(jìn)程如何接收信號,并處理呢?

dazhaozhao

請問大佬,我想用workerman來做redis stream的消費(fèi)端,我試了這么寫,好像發(fā)送信號,響應(yīng)不了啊

<?php

use Workerman\Events\EventInterface;
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';

$worker                = new Worker();
$worker->count         = 1;
$worker->onWorkerStart = function ($worker) {

    echo 'Pid is ' . posix_getpid() . "\n";

    // 當(dāng)進(jìn)程收到SIGALRM信號時(shí),打印輸出一些信息
    Worker::$globalEvent->add(SIGALRM, EventInterface::EV_SIGNAL, function () {
        //??? 打印不了啊
        echo "Get signal SIGALRM\n";
    });

    while (true) {
        //這里做redis 阻塞讀取 消息 
        echo "123\n";
        sleep(3);
    }

};
// 運(yùn)行worker
Worker::runAll();
1586 3 0
3個(gè)回答

phpcreeper

1、信號無法響應(yīng)原因是:
while死循環(huán)剝奪了workerman的控制權(quán),換句話也就是導(dǎo)致event.loop()循環(huán)永遠(yuǎn)都執(zhí)行不到;
2、建議將while死循環(huán)改成定時(shí)器;

  • 暫無評論
Tinywan

定時(shí)器實(shí)現(xiàn)

Timer::add(1, function (){
    RedisStreamQueue::consumer(
        RedisStreamQueue::STREAM_CHANNEL,
        RedisStreamQueue::GROUP_CHANNEL,
        RedisStreamQueue::CONSUMER_CHANNEL_A
    );
});
  • 暫無評論
dazhaozhao

改成定時(shí)器處理消息的速度會(huì)受到定時(shí)器的影響,看來無法用信號解決,還是另尋他法好了。

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??