2016-07-05 11 views
1

Wie Float-Werte mit AeroSpike PHP-Client zu erhöhen? Das Setzen von Float-Werten funktioniert gut, aber die Inkrementierung unterbricht den PHP-Prozess sichtbar und gibt nginx bad gateway zurück. Der Code ich benutze:Wie Float-Werte mit Aerospike PHP-Client erhöht werden

$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

[Gemäß den Dokumenten] (https://github.com/aerospike/aerospike-client-php/blob/master/doc/aerospike_increment.md) sollte der Inkrementwert eine ganze Zahl sein. Du passierst einen Schwimmer. Ich glaube nicht, dass Sie mit einem Float-Wert erhöhen können. – bzeaman

+0

Ich würde vorschlagen, dass das Öffnen eines Problems mit dem [aerospike/aerospike-client-php] (https://github.com/aerospike/aerospike-client-php/issues) normalerweise der richtige Weg ist. Es ist eine legitime Anfrage, aber stackoverflow ist nicht dort, wo Sie Bugs oder Features beschreiben, die aus dem Sink geraten sind. –

Antwort

1

Einer unserer Produktionsanwendungen lief auch in das gleiche Problem des Aerospike Java-Client als Autor und PHP-Client als Leser. Wir haben dem Problem entgegengewirkt, indem wir unsere Währungsdoppelwerte als Long-Ints gespeichert haben, indem wir das Double in eine 12-stellige Skala umgewandelt und die Periode reduziert haben. Zum Beispiel würde $ 1,2345 im Bin-Wert als 1234500000000 gespeichert werden. Dadurch können wir Inkrement-Multi-Ops an Aerospike senden.

Wenn der PHP-Client den Wert für die Speicherung in unserem Datenbankserver für die Berichterstellung liest, würden wir den 64-Bit-Int wieder in eine doppelte w/12-stellige Skala konvertieren. 1234500000000 -> $ 1.2345.

+1

Da der aktuelle Stand der Aerospike-Spezifikationen (zum Datum dieses Kommentars) keine zukünftige Unterstützung für Float-Inkremente anzeigt, ist Ihre Antwort der beste Ansatz für dieses Problem. Danke für das Teilen Ihrer Erfahrung. – Klaus