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

Medoo數(shù)據(jù)更新有概率會無效

thinkerdev

Workerman使用Medoo數(shù)據(jù)庫操作數(shù)據(jù)更新時 偶現(xiàn)/經(jīng)常 失敗

使用Timer定時任務(wù)更新數(shù)據(jù)庫,奇怪的點(diǎn),這個失敗并不是報錯。
示例代碼:

start中全局初始化了數(shù)據(jù)庫

$worker->onWorerStart = fn(){
    global $db;
    $db = new Medoo(數(shù)據(jù)庫配置)
}

收到消息時執(zhí)行http任務(wù)并更新數(shù)據(jù)庫

$worker->onMessage = fn(){
    global $db;
    Timer::add(30, fn() use($db){
        // 遠(yuǎn)程獲取http返回內(nèi)容
        $http = '預(yù)先規(guī)定的返回內(nèi)容';
        // 假設(shè) http 返回id,content字段
        if($http = '正確'){
            // 根據(jù)id 更新本地數(shù)據(jù)庫對應(yīng)content字段, 及 status = 1
            // 本地數(shù)據(jù)庫 有個 status = 0 默認(rèn), 需要再更新為 status = 1
            $db->update('table', [
                // medoo field
                'content' => $http['content'],
                'status' => 1
            ],[
                // medoo where
                'id' => $http['id']
            ]); // medoo 更新操作
            // 打印日志 提示 成功
            echo 'http 正確,數(shù)據(jù)庫更新 - 成功'
        } else {
            // 打印日志 提示 失敗
            echo 'http 錯誤,數(shù)據(jù)庫不更新 - 失敗'
        }
    })
}

出現(xiàn)問題地方在于:
onMessage回調(diào)中 $db->update 這里,

偶爾或經(jīng)常在日志提示成功時,數(shù)據(jù)庫相關(guān)的內(nèi)容也不會更新

比如:日志提示成功了,數(shù)據(jù)庫 content 字段確實(shí)被更新了,但 status = 0 默認(rèn) 字段依然是默認(rèn)的,期間運(yùn)行中也沒有任何報錯

又或者: 日志也提示成功了, 但數(shù)據(jù)庫中什么也沒更新 contentstatus = 0 默認(rèn) 都沒用被更新, 同樣也沒有報錯

但是,還是會有按預(yù)期把數(shù)據(jù)完整更新的,也就是 contentstatus = 1 都更新了

這個問題無從定位是哪里的原因,使用了try catch也沒有異常發(fā)生,想請問是Medoo的原因還是本身業(yè)務(wù)代碼上有什么問題嗎?請大佬幫助分析下

操作系統(tǒng)環(huán)境及workerman/webman等具體版本

OS:Ubuntu 及 Centos
啟動方式:寶塔 - 進(jìn)程守護(hù)
php worker.php start

843 1 0
1個回答

pole

試著更新的時候把當(dāng)前時間作為字段也更新一下

  • xiasha11 2024-01-22

    'content' => $http['content'],
    'status' => 1
    有沒有可能這兩個字段數(shù)據(jù)庫里和提交的是一致的?medoo updata如果信息一致會返回更新失敗

  • thinkerdev 2024-01-22

    不會的,這2個字段的值從http過來的數(shù)據(jù)一定不會一致,status = 0創(chuàng)建時就默認(rèn)的,content也不會一樣。問題就是medoo并沒有報錯,查看了log也是正確語句?,F(xiàn)在測試的,加上了 updateTime 也作為更新字段后一切正常

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