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

如何使用 workerman 同時(shí)執(zhí)行任務(wù)?

孫飛

現(xiàn)在需要通過接口在 es 查數(shù)據(jù),數(shù)據(jù)量較大,直接使用 PHP 查詢,再處理后存庫(kù),時(shí)間較長(zhǎng)。如何使用 workerman 開多個(gè)進(jìn)程同時(shí)執(zhí)行呢?每一次執(zhí)行根據(jù)查詢數(shù)據(jù)的 offset 和 limit 可以拿到對(duì)應(yīng)的數(shù)據(jù),這樣就可以加速查詢。

2341 2 0
2個(gè)回答

可以考慮用redis-queue隊(duì)列,開多個(gè)進(jìn)程查詢.
http://wtbis.cn/doc/workerman/components/workerman-redis-queue.html

  • 孫飛 2021-12-10

    感謝回答,我現(xiàn)在主要是es中數(shù)據(jù)太大,如果只用php單進(jìn)程來讀,然后保存,效率就會(huì)很低,很低。所以就想用多進(jìn)程的方式,每次通過不同的offset來查詢es中的數(shù)據(jù),這樣可以加快從es中拿到數(shù)據(jù)。對(duì)列這個(gè)方法好像沒法加快從es中拿數(shù)據(jù)這一過程。請(qǐng)問您知道怎么解決嗎?不勝感激

  • iot物聯(lián)網(wǎng)平臺(tái) 2021-12-10

    可以考慮用workerman來進(jìn)行異步處理.
    參考這個(gè)http://wtbis.cn/q/582

  • 孫飛 2021-12-11

    大佬,我現(xiàn)在把這個(gè)異步調(diào)好了, 但是我這個(gè)是定時(shí)任務(wù),每一次啟動(dòng)都都是會(huì)監(jiān)聽這個(gè)端口,但是這樣第二次定時(shí)任務(wù)消息就發(fā)在第一次的代碼中去了,這種怎么處理呢

  • iot物聯(lián)網(wǎng)平臺(tái) 2021-12-11

    你把這個(gè)異步服務(wù)作為任務(wù)執(zhí)行端,定時(shí)任務(wù)作為任務(wù)發(fā)布端。定時(shí)任務(wù)執(zhí)行的時(shí)候把需要處理的任務(wù)發(fā)給執(zhí)行端,讓執(zhí)行端慢慢執(zhí)行,執(zhí)行完了之后可以用回調(diào)的方式異步通知你

  • 孫飛 2021-12-12

    我昨天完成了這個(gè)實(shí)現(xiàn),然后我異步執(zhí)行的時(shí)候,數(shù)據(jù)太多,執(zhí)行很耗時(shí),我就想著使用 redis-queue 來做,但是數(shù)據(jù)放進(jìn) redis-queue,然后那邊拿到的數(shù)據(jù)會(huì)重復(fù),就很難受了

  • yongdao35 2021-12-12

    是不是投送重復(fù)了,投遞消息的時(shí)候記錄日志,看下投遞了幾次。如果用了websocket推送,看下是不是建立了多個(gè)連接導(dǎo)致推送了多次

  • 孫飛 2021-12-12

    推送代碼:
    $text_worker = new Worker('text://0.0.0.0:56178');
    $m = $data['talentId']%10;
    $this->redis_queue_send($redis, 'User:'.$m , 1);
    接收代碼:總共有10個(gè)隊(duì)列
    $client->subscribe('User:0', function($data){
    print_r($data);
    });
    ...
    $client->subscribe('User:9', function($data){
    print_r($data);
    });

    是上邊網(wǎng)消息隊(duì)列中添加消息的時(shí)候有問題嘛

  • iot物聯(lián)網(wǎng)平臺(tái) 2021-12-12

    你投遞的時(shí)候開了幾個(gè)進(jìn)程?

six

開多個(gè)進(jìn)程,每個(gè)進(jìn)程按照進(jìn)程id取不同的from,offset。例如

$worker = new Worker();
$worker->count = 10;
$worker->onWorkerStart = function($worker) {
    // 進(jìn)程數(shù)為10的話,進(jìn)程id會(huì)是從0到9
    $from = $woker->id * $worker->count;
    $offset = $worker->count;
    while($result = your_es_search($from, $offset)) {
        $from = $from + $worker->count*$offset;
    }
};

大致思路是這樣,代碼不一定對(duì),你可以試下

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