Восстановить PHP (ошибка Redis?) - PullRequest
1 голос
/ 28 января 2012

Я пытаюсь использовать PHP Resque (который использует Redis через redisent), но я получаю эту ошибку:

Warning: fsockopen() expects parameter 2 to be long, string given in 
/home/***/public_html/codes/ao/resque/lib/Redisent/Redisent.php on line 56

Fatal error: Uncaught exception 'Exception' with message ' - ' in 
/home/***/public_html/codes/ao/resque/lib/Redisent/Redisent.php:58 Stack trace: #0 
/home/***/public_html/codes/ao/resque/lib/Redisent/Redisent.php(52): Redisent-
>establishConnection() #1 /home/***/public_html/codes/ao/resque/lib/Resque.php(38): 
Redisent->__construct('redis', '//***') #2 /home/***/public_html/cons/db.php(6): 
Resque::setBackend('redis://***...') #3 {main} thrown in 
/home/***/public_html/codes/ao/resque/lib/Redisent/Redisent.php on line 58

Я не могу понять, что не так. Пожалуйста, помогите мне!

1 Ответ

2 голосов
/ 28 января 2012

Самая первая строка вашего дампа ошибки показывает проблему.

fsockopen() expects parameter 2 to be long, string given in 
  in /home/***/public_html/codes/ao/resque/lib/Redisent/Redisent.php on line 56

Второй параметр fsockopen () должен быть номером порта. Каким-то образом вы передаете в него строку.

Остальные ошибки следуют просто из-за сбоя соединения.

Если посмотреть на исходный код Redisent.php , похоже, что вы передали неверный параметр конструктору объекта Redisent.

В вашем исходном коде, где у вас есть что-то вроде:

$foo = new Redisent('hostname', '32323'); // See the bug?

... убедитесь, что второй параметр не является строкой.

Правильно будет следующее:

$foo = new Redisent('hostname', 32323); // no quotes around port number!
...