Resque PHP(Redis错误?)

时间:2012-01-28 05:27:47

标签: php redis resque

我正在尝试使用PHP Resque(通过redisent使用Redis),但我一直收到此错误:

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 个答案:

答案 0 :(得分:2)

错误转储的第一行显示问题。

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 source code时,您似乎必须将无效参数传递给Redisent对象的构造函数。

在您的源代码中,您可以使用以下内容:

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

...确保第二个参数不是字符串。

以下是正确的:

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