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

如何用workerman的timer做電商網(wǎng)站的自動收貨

twins3520

那個Timer::add里面的延遲時間能不能設(shè)置發(fā)貨后7天自動收貨的,會不會延時時間太長?而且要很多個用戶很多個物流訂單會不會堵塞?或者變成線程太多程序掛起不能運行?能不能做個demo給我?該怎么優(yōu)化和使用???

1590 4 2
4個回答

luohonen

這特么是延遲隊列,跟Timer定時器有啥關(guān)系,最基礎(chǔ)的延遲隊列都不會嗎?

  • 小W 2023-02-21

    這個方案是好一點,最好不要依賴redis的key過期事件

darcy

不用Redis吧,查詢7天前的數(shù)據(jù)訂單數(shù)據(jù)就可以了

Db::table('orders')->whereDate('CreateTime', date("Y-m-d",strtotime("-7 day")))->get();

這樣就可以查詢到7天前的數(shù)據(jù)列表了,然后再進(jìn)行邏輯處理就行了

  • 小W 2023-02-21

    你這個是自然天

  • FlyLow 2023-02-21

    數(shù)據(jù)量和并發(fā)高起來 你的mysql怕是扛不住的哦

  • aveadtyx 2023-02-21

    個人覺得這是很好的方案,數(shù)據(jù)生成速度快而多的 可以考慮多起幾個進(jìn)行分組

  • aveadtyx 2023-02-21

    不過要limit 不能全部查出

  • darcy 2023-02-21

    如果是大數(shù)據(jù)的話,可以采用分塊處理
    http://www.wtbis.cn/doc/webman/db/queries.html#%E5%88%86%E5%9D%97%E7%BB%93%E6%9E%9C

    Db::table('orders')->whereDate('CreateTime', date("Y-m-d",strtotime("-7 day")))->chunkById(100, function ($orders) {
    // Process the records...

    return false;

    });

  • liangnian 2023-02-21

    <?php
    namespace process;
    use Workerman\Timer;
    use app\model\Billing;
    class AutoSign
    {
    public function onWorkerStart()
    {
    $timer = config('iot.time');
    $Billing = new Billing;
    Timer::add($timer, function() use ($Billing){
    $time = time() - 3600 24 7;
    $billingData = $Billing->where('createtime', '<', $time)->where('status', '未簽收')->select();
    if(count($billingData) > 0) {
    $billingData = $Billing->changeStatus($billingData);
    }
    });
    }
    }

  • nitron 2023-02-21

    訂單總會有標(biāo)記收貨狀態(tài)的字段吧,做個聚合索引,where條件內(nèi)加上狀態(tài),量就少了(理論值)和速度也快了

nitron

不用精確到剛好七天整(7 24 60 * 60秒) ,可以晚個幾十秒,幾分鐘,甚至幾十分鐘的話,不需要借助什么redis,計劃任務(wù)就行,簡單方便依賴少

  • 小W 2023-02-22

    每幾時統(tǒng)計一次,批量更新就可以,簡單容易維護(hù)

安穩(wěn)

用redis-queue插件 那個延遲投遞不就行了,發(fā)貨以后投遞數(shù)據(jù)
Redis::send($queue, $data, 延遲秒數(shù));

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