我在我的项目中使用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
由于它高于整数限制,因此它会被转换为浮点数。
我知道如何解决这个问题?
答案 0 :(得分:1)
Cassandra\Timeuuid
time
应该接收从$today = date("yyyy-mm-dd");
函数获得的整数。查看驱动程序的源代码,它看起来确实需要以秒为单位的值,然后所有乘法都在C ++驱动程序中发生。
对我而言,它看起来像是驱动程序中的错误,因此请将问题提交给documentation states。