2016-07-05 13 views
1

AeroSpike의 PHP 클라이언트로 float 값을 증가시키는 방법은 무엇입니까? float 값을 넣어도 잘 작동하지만 증분으로 인해 PHP 프로세스가 중단되고 nginx 불량 게이트웨이가 반환됩니다. 코드는 내가 사용 : 우리의 생산 응용 프로그램의Aerospike PHP 클라이언트로 float 값을 증가시키는 방법

$key = $db->initKey("test", "queries", 'bench'); 
    $p = array('a' => 2.3); 
    $db->put($key, $p);    // works fine 
    $db->increment($key, 'a', 4.2); // php process crashes at this point 
+0

[문서에 따르면] (https://github.com/aerospike/aerospike-client-php/blob/master/doc/aerospike_increment.md) 증분 값은 정수 여야합니다. 당신은 부유물을 전달합니다. 나는 당신이 float 값을 사용하여 증가시킬 수 있다고 생각하지 않는다. – bzeaman

+0

나는 [aerospike/aerospike-client-php] (https://github.com/aerospike/aerospike-client-php/issues)와 함께 문제를 여는 것이 일반적으로 길 일 것을 제안합니다. 그것은 합법적 인 요청이지만 stackoverflow는 싱크대 밖의 버그 나 기능을 설명하는 곳이 아닙니다. –

답변

1

하나는 독자와 작가와 PHP 클라이언트로 Aerospike 자바 클라이언트를 사용하여 동일한 문제로 달렸다. 우리는 double을 12 자리 숫자로 변환하고 마침표를 삭제함으로써 통화 double을 long int로 저장함으로써이 문제를 반박했습니다. 예를 들어, $ 1.2345는 bin 값에 1234500000000으로 저장 될 것입니다. 이것은 Aerospike에 멀티 - 옵틱을 증가시킬 수 있습니다.

PHP 클라이언트가보고를 위해 DB 서버에 저장 값을 읽을 때 우리는 64 비트 int를 double w/12 digit scale로 변환합니다. 1234500000000 -> $ 1.2345

+1

Aerospike 사양의 현재 상태 (이 주석의 날짜 기준)는 이후의 부동 소수점 지원을 나타내지 않으므로이 문제에 대한 최선의 방법은 귀하의 답변입니다. 경험을 공유해 주셔서 감사합니다. – Klaus