1

プロジェクトで cassandra 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

整数制限を超えているため、float にキャストされています。

どうすればこの問題を解決できますか?

4

1 に答える 1