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); // 前面报错结束任务了,不会执行该代码
报错信息
根据网上内容尝试
- 参考的一些解决方案,但也无法解决
- 设置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
得以解决
评论
暂无评论
* 登录后即可评论