Скрипт работает на моем MAC, phpinfo()
показывает, что версия поддержки php redis: Redis версии 2.2.5
Мой скрипт на PHP:
$script
= "local count = redis.call('incr',KEYS[1])
if tonumber(count) == 1 then
redis.call('expire',KEYS[1],ARGV[1])
end
return count";
//$sha1_value = $this->conn->script('load', $script);
//var_dump($sha1_value);
if (FALSE === $this->conn->evalSha('e03b35e8ef29c5c746b1791ec7ae89e19f52156c', [
$key,
1800
], 1)
)
{
$this->conn->eval($script, [
$key,
1800
], 1);
}
Скрипт не работает на моем сервере, на котором версия PHP для Redis — 2.1.0.
Проблема в том, что программа отвечает $this->conn->script()
или же $this->conn->evalSha()
метод прервет процесс, это очень странно, потому что журнал ошибок не распечатывается, и когда я пишу код, используя try ... catch ...
Кстати, сообщение об исключении тоже не распечатано.
Я проверил официальный сайт Redis он говорит:
EVAL and EVALSHA are used to evaluate scripts using the Lua interpreter built into Redis starting from version 2.6.0.
(http://redis.io/commands/EVAL)
Так что мне любопытно, потому что версия redis-cli на моем сервере уже 2.8.0, а на моем MAC — 3.0.2.
Итак, как я могу выяснить проблему?
Задача ещё не решена.
Других решений пока нет …