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

Locker::lock 有bug啊?沒(méi)bug 多進(jìn)程的問(wèn)題 已解決

lsmir2

問(wèn)題描述

截圖
截圖

程序代碼或配置

        $ip = $request->getRealIp();
        $key =(string) ip2long($ip);
        Cache::Incr($key);  //1                                  //再次刷新 3
        Locker::lock($key); //無(wú)鎖則加鎖繼續(xù)            //已經(jīng)加鎖了    阻塞失敗
        Cache::Incr($key);  //2                                 //這里是4
        return  Cache::Get($key); //輸出2                //輸出4,甚至是5 鎖失效..

重現(xiàn)問(wèn)題的步驟

瀏覽器打開(kāi)接口然后一直點(diǎn)刷新..

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

Workerman/5.1.3 PHP/8.3.21 (JIT off) Darwin/23.6.0
--------------------- WORKERS ----------------------
event-loop proto user worker listen count state
fiber tcp lsmir2 webman http://0.0.0.0:8787 2 [OK]
event tcp lsmir2 monitor none 1 [OK]
event tcp lsmir2 plugin.webman.redis-queue.consumer none 2 [OK]

392 2 1
2個(gè)回答

lsmir2

手搓一個(gè)多進(jìn)程鎖 感謝兔子大佬的WebmanSharedCache插件真的很好用.

<?php
namespace app\common;
use Workbunny\WebmanSharedCache\Cache;
class Locker
{
    /**
     * 多進(jìn)程鎖
     * @param string $key  鎖的鍵名
     * @param int $ttl     鎖過(guò)期時(shí)間,單位秒
     * @return bool
     */
    public static function lock(string $key, int $ttl = 2): bool
    {
        $lockKey = "lock_{$key}";
        if (!Cache::get($lockKey)) {
            Cache::set($lockKey, 1,  ['EX' => $ttl]);
            return true;
        }
        return false;
    }

    /**
     * Unlock.
     *
     * @param string $key
     * @return bool
     */
    public static function unlock(string $key): bool
    {
        $lockKey = "lock_{$key}";
        if (Cache::get($lockKey)) {
            Cache::Del($lockKey);
            return true;
        }

        return false;
    }
}
  • ak47f16200 21天前

    多進(jìn)程下沒(méi)問(wèn)題?

  • lsmir2 20天前

    支持多進(jìn)程,Workbunny\WebmanSharedCache\Cache 是跨進(jìn)程緩存

qq7467466

Windows環(huán)境下locker不生效的, 需要在linux下進(jìn)行測(cè)試
具體看這個(gè): http://www.wtbis.cn/q/10238

  • lsmir2 2025-08-01

    多進(jìn)程的問(wèn)題,你看源碼就知道了有個(gè)靜態(tài)數(shù)組.

??