Home >> Laravel Job任务中调用Redis发生read error on connection的错误

Laravel Job任务中调用Redis发生read error on connection的错误

2024-02-01 17:03 AtmosphereMao

Redis发生read error on connection的错误

问题描述

在docker的php-apache容器中运行laravel的job任务中调用redis发生read error on connection的错误。

php artisan queue:work # 运行job
# 任务中调用redis发生错误
# Job 调用Redis的代码
Redis::set('test', 1); // 这句能set到值到redis,但是接着就发生read error on connection的错误了
Redis::expire('test',  2 * 24 * 60 * 60); // 前面报错结束任务了,不会执行该代码

报错信息

error

根据网上内容尝试

  • 参考的一些解决方案,但也无法解决
    • 设置php.ini,default_socket_timeout = -1
    • 切换Redis Client,phpredis 更换为 predis
    • 配置database.php,增加timeout=0参数

自行尝试解决

使用laravel的redis会发生错误,目前能跑通的解决办法:

    public function handle(): void
    {
        $redis = init_redis(); // Predis实例化
        $redis->set('test', 1); //这样后续的redis操作都不会报错
   }

// 如果在__construct里实例化Predis也会遇到这个read connection error
    public function __construct()
    {
        $this->redis = init_redis();
    }

   public function handle(): void
    {
        $this->redis->set('test', 1); //这样还是会遇到read connection error
   }

最终解决方案

后来在控制器中调用Redis也出现这种问题了,之前的解决办法总不能一直这样用,尝试了重装容器环境,从而解决了。

php:apache-buster换成php:fpm得以解决

评论


暂无评论


* 登录后即可评论

©2022 联系我们

粤ICP备2022023863号
500x500