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

關(guān)于定時(shí)跑數(shù)據(jù)的問題

海盜船長

現(xiàn)在的業(yè)務(wù)場景是: 每10分鐘運(yùn)行一次,先從mysql讀取url列表,然后訪問這些url,把每個(gè)url返回的數(shù)據(jù)存起來。

現(xiàn)在我在用的辦法是crondtab定時(shí),10分鐘運(yùn)行一次,循環(huán)讀取每個(gè)url的數(shù)據(jù),這樣量多的時(shí)候就慢了。

我現(xiàn)在想用workerman實(shí)現(xiàn)定時(shí),多進(jìn)程,就是一次讀取多個(gè)url,這樣就快很多,但是剛接觸workerman,完全沒有思路。主要是不理解用php多進(jìn)程處理。

哪位大神能給個(gè)思路,或者哪個(gè)開源的是類似這樣的。

1955 2 0
2個(gè)回答

海盜船長

這個(gè)是網(wǎng)上查到的,用swoole實(shí)現(xiàn)的,我想要的就是這樣的
這個(gè)是把10個(gè)url分成5組,每組跑2個(gè)
<?php
/**

  • Created by PhpStorm.
  • User: cyw0413
  • Date: 2018/10/20
  • Time: 10:51
    /
    $url_arr = array();
    for ($i=0;$i<10;$i++){
    $url_arr[] = "www.baidu.com?wd=".$i;
    }
    echo "start:".date("Y-m-d H:i:s").PHP_EOL;
    $workers = array();
    for ($i=0;$i<5;$i++){
    $process = new swoole_process('getContents',true);
    $process->start();
    $process->write($i);
    $workers[] = $process;
    }
    //主進(jìn)程數(shù)據(jù)結(jié)果
    foreach ($workers as $process){
    echo $process->read();
    echo PHP_EOL;
    }
    echo "end:".date("Y-m-d H:i:s").PHP_EOL;
    function getContents(swoole_process $worker){
    $i = $worker->read();
    global $url_arr;
    $res1 = execCurl($url_arr[($i
    2)]);
    $res2 = execCurl($url_arr[($i*2+1)]);
    echo $res1.PHP_EOL.$res2;
    }
    function execCurl($url){
    sleep(2);
    return "handle ".$url." finished";
    }
  • 暫無評論
phpxu

剛好最近準(zhǔn)備用workerman想開源個(gè)定時(shí)任務(wù)系統(tǒng),給你說下思路吧,你可以啟動兩個(gè)worker,一個(gè)是用來跑定時(shí)任務(wù)的,到時(shí)間把數(shù)據(jù)取出來。另一個(gè)worker是用來執(zhí)行任務(wù),這個(gè)你worker子進(jìn)程count可以開多些,然后定時(shí)任務(wù)把數(shù)據(jù)取出來用異步通信把數(shù)據(jù)發(fā)給執(zhí)行任務(wù)的worker

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