2016-07-05 3 views
1

AeroSpikeのPHPクライアントで浮動小数点値をインクリメントする方法は?浮動小数点値を置くことはうまくいきますが、インクリメントによってPHPプロセスが壊れ、nginxの悪いゲートウェイが返されます。 私が使用するコード:当社の生産用途のAerospike PHPクライアントで浮動小数点値をインクリメントする方法

$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)、増分値は整数でなければなりません。あなたはフロートを渡す。浮動小数点値を使用してインクリメントできるとは思いません。 – bzeaman

+0

私は、[aerospike/aerospike-client-php](https://github.com/aerospike/aerospike-client-php/issues)の問題を開こうとするのが通常の方法だとお勧めします。正当な要求ですが、stackoverflowはバグやシンクから外れている機能を記述する場所ではありません。 –

答えて

1

1つはまたリーダーとして作家やPHPクライアントとしてエアロスパイクJavaクライアントを使用して、同じ問題に遭遇しました。我々は、ダブルを12桁の尺度に変換して期間を落とすことによって、通貨ダブルをlong intとして格納することによって問題を解決しました。たとえば、$ 1.2345は1234500000000というビン値に格納されます。これにより、Aerospikeに増分マルチオプスを送信することができます。

PHPクライアントがDBサーバに報告するためにストレージの値を読み込むと、64ビットのintが倍精度のw/12桁に変換されます。 1234500000000 - > $ 1.2345

+1

Aerospike仕様の現在の状態(このコメントの日付現在)は、将来のフロート増分のサポートを示していないので、あなたの答えはこの問題に対する最良のアプローチです。あなたの経験を共有してくれてありがとう。 – Klaus

関連する問題