webman中怎么维护全局变量

aphper

能直接放在内存中每次请求都拿到那种

例如本次请求赋值了,下次请求取出来还是上次请求的值,webman本身是直接常驻内存的,这种有办法实现吗

2078 2 4
2个回答

walkor

使用全局变量、类的静态成员、或者函数内静态变量都可以实现存储全局变量。
例如:
app/functions.php 里加一个函数

function cache($key, $value = null)
{
    static $cache = [];
    if ($value === null) {
        return $cache[$key] ?? null;
    }
    $cache[$key] = $value;
}

存储数据的时候调用 cache('my_key', 'my value');,读取数据的时候直接用 cache('my_key');
一定程度上可以替代redis缓存的功能,但是性能比redis高几个数量级。

  • evilk 2022-03-02

    这个只能是当前进程能使用吧,应该是每个work进程都维护一个自己的全局变量吗?

  • nitron 2022-03-02

    其实还有一个邪道, /dev/shm,读写操作全部在内存中完成,无IO消耗,性能极高,就是要注意并发对写锁的问题,还有内存大小

  • walkor 2022-03-02

    对,当前进程。用得高级点可以里面加个redis,cache里没有数据读redis,然后存储到cache数组里。以后访问都是内存访问。

  • dignfei 2022-03-05

    shm里面不行,要转换数据类型耗时间。你存一个大数组试试。卡死你

  • nitron 2022-03-05

    没遇到过

  • tanhongbin 2022-03-05

    用过webman以后我是看着laravel,tp,yii就头疼,哎感觉这些框架太难受了

  • tanhongbin 2022-03-05

    一堆繁琐的设置,配置,队列也不好处理,还不带守护进程,关键是性能还慢的一比

  • Tinywan 2022-03-05

    你错了

年代过于久远,无法发表回答
🔝