PHP 多进程编程下 Redis 的 Bug

最近在使用 pcntl_fork 进行多进程编程父子进程都用到 Redis 的时候,遇到一个问题

当子进程结束后,父进程正在使用的 Redis 连接资源会报错
Redis::get(): send of 40 bytes failed with errno=32 Broken pipe

尝试了父子进程各自单独建立 Redis 的连接资源「非单例模式」,依旧会报错
网上似乎有说法说是 Redis 的 Bug

  • 解决办法

最后解决办法是在 pcntl_fork 前先把当前的 Redis 资源释放,创建子进程后再重新建立连接

$redis->close();
pcntl_fork(0;
$redis = getRedis();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容