2010-09-22 10 views
9

Ich führe ein PHP-Frontend zu einer Anwendung, die viel Arbeit mit Daten und Cassandra als Datenspeicher verwendet.Verwenden von C++ für Back-End-Berechnungen in einer Webanwendung

aber ich weiß, PHP gibt mir nicht die Leistung, die ich für einige der Berechnungen benötigen (wie auch das Management für die schiere Menge an Daten, die im Speicher sein muss)

Ich mag schreiben das unterstützte Zeug in C++ und greifen Sie von der PHP-Anwendung darauf zu. Ich versuche herauszufinden, wie ich die beiden am besten verbinden kann.

Einige Optionen, die ich angeschaut habe:

  1. Thrift (Eine natürliche Wahl, da ich es bereits für Cassandra bin mit)
  2. Googles Protocol Buffers
  3. gSOAP
  4. Apache Axis

Die oben genannten sind nur Dinge, die ich angeschaut habe, ich beschränke mich nicht.

Die Daten, die in die PHP-Anwendung übertragen werden, sind sehr klein, daher ist kein Streaming erforderlich. Nur Ergebnisse von Berechnungen werden übertragen.

Was denkst du?

+0

+1 für eine gute Frage. Ich freue mich auf die Antworten (übrigens, ich liks gSoap) – Mawg

+0

Danke, was magst du an gSOAP? –

Antwort

1

Weitere Informationen darüber, wie viele Daten Ihre Berechnungen benötigen, wären nützlich. Sparsamkeit scheint eine vernünftige Wahl zu sein. Sie könnten es zwischen PHP, Ihrem Rechenknoten und dem Cassandra-Backend verwenden. Wenn Ihr Ergebnis klein ist, macht Ihr RPC-Transport zwischen PHP und dem Berechnungsknoten keinen großen Unterschied.

2

Beschränken Sie sich auf C++ als separate Anwendung? Hast du darüber nachgedacht, es direkt mit PHP zu verbinden? (d. h. eine C++ Erweiterung in Ihre PHP-Anwendung einbinden).

Ich sage nicht, der zweite Ansatz ist notwendigerweise besser als der erste, aber Sie sollten es trotzdem in Erwägung ziehen, weil es einige verschiedene Kompromisse bietet. Zum Beispiel wäre die Latenz beim Übergeben von Inhalten zwischen PHP und C++ sicherlich höher, wenn die beiden getrennte Anwendungen sind, als wenn sie dynamisch mit der gleichen Anwendung verknüpft sind.

+0

Ich habe erwogen, es mit SWIG hinzuzufügen, aber ich denke, es macht mehr Sinn für mich, einfach die Daten aus Cassandra über die Sparsamkeit zu meiner C++ - App zu holen, die Berechnung durchzuführen und das Ergebnis von PHP abzufragen. –

+0

@Stephen: letztendlich ist es natürlich deine Wahl, ich wollte nur betonen, dass dies auch ein gültiger Weg ist –

3

Wenn ich Sie wäre, würde ich Sparsamkeit verwenden, keinen Sinn in einem anderen RPC-Framework ziehen. Geh mit was du hast und weißt es schon. Thrift macht es so einfach (so auch Google-Protokoll-Puffer, aber Sie brauchen nicht wirklich zwei verschiedene Mechanismen)