top-think/think-worker

关于worker项目运行目录和web项目运行目录不一致导致的runtime文件写入&读取异常问题

Closed this issue · 2 comments

官方worker运行在根目录,http运行在public目录
例如think-orm中的cache,由于默认的本地缓存path是相对路径(如下),导致读写失败

// 驱动方式
//文件缓存
        'file'  => [
                // 驱动方式
                'type'       => 'File',
                // 缓存保存目录
                'path'       => '../runtime/cache',
                // 缓存前缀
                'prefix'     => '',
                // 缓存有效期 0表示永久缓存
                'expire'     => 0,
                // 缓存标签前缀
                'tag_prefix' => 'tag:',
                // 序列化机制 例如 ['serialize', 'unserialize']
                'serialize'  => [],
        ],

可以修改path为空或者新建一个驱动方式(如下)

 // 驱动方式
'fileWK'  => [
            'type'       => 'File',
            // 缓存保存目录
            'path'       => '',
            // 缓存前缀
            'prefix'     => '',
            // 缓存有效期 0表示永久缓存
            'expire'     => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize'  => [],
]

然后使用
Db::setCache(Cache::store('fileWK'));设置缓存方案。谁有更好地方案,请告知

进入public 目录再执行

php ../think worker:server

@ichynul 谢谢,这是个好主意