>

프로젝트에서 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

정수 한계보다 높기 때문에 부동으로 캐스트됩니다.

어떻게이 문제를 해결할 수 있을까요?


  • 답변 # 1

    문서는 Cassandra\Timeuuid   time 에서 얻은 정수를 받아야합니다.  기능. 드라이버의 소스 코드를 살펴보면 실제로 몇 초 만에 값을 기대하고 모든 곱셈은 C ++ 드라이버 내에서 발생합니다.

    나에게 그것은 드라이버의 오류처럼 보입니다. JIRA에 문제를 제기하십시오.

  • 이전 javascript - 데이터베이스에서 전화 번호 또는 이메일 주소로 등록을 처리하는 방법은 무엇입니까?
  • 다음 firebase - Android 최신 버전 OREO에서 FCM 알림이 작동하지 않음