PHP Cassandra Timeuuid конструктор достигает целочисленного предела (32 бита)

Я использую Кассандру timeuuid в моем проекте. Но невозможно создать timeuuid из-за целочисленных ограничений.

$time = time();

$tS = new Cassandra\Timeuuid($time);
echo("Time Stamp : " . $time       . "</br>");
echo("Time UUID  : " . $tS         . "</br>");
echo("UUID TS    : " . $tS->time() . "</br>");

Если я бегу выше кода, я получаю следующий результат.

Time Stamp : 1519110425
Time UUID : 07e0a090-2ba3-11b2-a264-4f5a3b4facaa
UUID TS : 1519110

Это означает, что конструктор Timeuuid ожидает отметку времени в миллисекундах. Но если я попытаюсь передать параметр в миллисекундах, он достигнет целочисленного предела для моего php (32 бита).

$time = time();

$tS = new Cassandra\Timeuuid($time * 1000);
echo("Time Stamp : " . $time       . "</br>");
echo("Time UUID  : " . $tS         . "</br>");
echo("UUID TS    : " . $tS->time() . "</br>");

Получение следующей ошибки для вышеуказанного кода.

Fatal error: Uncaught Cassandra\Exception\InvalidArgumentException: Invalid argument - integer or string expected in testFile.php:9 Stack trace: #0 testFile.php(9): Cassandra\Timeuuid->__construct(1519110640000) #1 {main} thrown in testFile.php on line 9

Так как он выше целочисленного предела, он приводится к плавающему значению.

Любая идея, как я могу решить эту проблему?

1

Решение

состояние документации тот Cassandra\Timeuuid должен получить целое число, которое вы получаете от time функция. Если посмотреть на исходный код драйвера, то действительно выглядит, что он ожидает значение в секундах, а затем все умножение происходит внутри драйвера C ++.

Для меня это похоже на ошибку в драйвере, поэтому, пожалуйста, подайте вопрос против него в JIRA.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]