我正在使用 predis,一切都很好,直到我开始收到此错误:
ERR Protocol error: invalid bulk length
我不确定我为什么会得到它。错误在此文件中:此方法中的 Predis/Network/StreamConnection.php:
public function writeCommand(ICommand $command) {
$commandId = $command->getId();
$arguments = $command->getArguments();
$cmdlen = strlen($commandId);
$reqlen = count($arguments) + 1;
$buffer = "*{$reqlen}\r\n\${$cmdlen}\r\n{$commandId}\r\n";
for ($i = 0; $i < $reqlen - 1; $i++) {
$argument = $arguments[$i];
$arglen = strlen($argument);
$buffer .= "\${$arglen}\r\n{$argument}\r\n";
}
$this->writeBytes($buffer);
}
当它尝试对数组执行 strlen() 时,它会失败。
这是导致此失败的代码:
$ids = array(1, 2, 3);
$predis = new Predis\Client();
$predis->set('testerKey', $ids);
我不允许设置数组吗?当然我可以设置一个数组。我唯一改变的是我将文件设为 UTF-8,所以也许这搞砸了?
任何帮助,将不胜感激。