私は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 にしたことでした。
どんな助けでも大歓迎です。