2010-09-22 44 views
9

Je suis en train d'exécuter un frontal PHP pour une application qui fait beaucoup de travail avec les données et utilise Cassandra comme magasin de données.Utilisation de C++ pour les calculs backend dans une application Web

Cependant, je sais que PHP ne me donne pas la performance que j'ai besoin pour certains des calculs (ainsi que la gestion de l'énorme quantité de données qui doit être en mémoire)

Je voudrais écrire les choses sauvegardées en C++ et y accéder à partir de l'application PHP. J'essaie de trouver la meilleure façon d'interfacer les deux.

Quelques options que j'ai regardé:

  1. Thrift (Un choix naturel puisque je suis déjà l'utiliser pour Cassandra)
  2. Protocol Buffers de Google
  3. gSOAP
  4. Apache Axis

Ce qui précède ne sont que des choses que j'ai regardées, je ne me limite pas.

Les données transférées vers l'application PHP étant très petites, la diffusion en continu n'est pas requise. Seuls les résultats des calculs sont transférés.

Qu'en pensez-vous? Est-ce que vous vous limitez à avoir C++ en tant qu'application séparée?

+0

+1 pour une bonne question. J'attends avec impatience les réponses (btw, je lirk gSoap) – Mawg

+0

Merci, qu'est-ce que tu aimes à propos de gSOAP? –

Répondre

1

Plus de détails sur la quantité de données dont vos calculs auront besoin seraient utiles. Thrift semble être un choix raisonnable. Vous pouvez l'utiliser entre PHP, votre noeud de calcul, et le backend de Cassandra. Si votre résultat est petit, votre transport RPC entre PHP et le noeud de calcul ne fera pas trop de différence.

2

Avez-vous envisagé de l'interfacer avec le PHP directement? (c'est-à-dire lier une extension C++ dans votre application PHP). Je ne dis pas que la deuxième approche est nécessairement meilleure que la première, mais vous devriez la considérer de toute façon, car elle offre des choix de compromis différents. Par exemple, le temps de latence entre le PHP et le C++ serait sûrement plus élevé lorsque les deux sont des applications séparées que lorsqu'elles sont liées dynamiquement à la même application.

+0

J'ai envisagé de l'ajouter avec SWIG, mais je pense qu'il est plus logique pour moi de simplement récupérer les données de Cassandra dans mon application C++, faire le calcul et interroger le résultat de PHP. –

+0

@Stephen: en fin de compte c'est votre choix bien sûr, je voulais juste souligner que c'est aussi un chemin valide à prendre –

3

Si j'étais vous j'utiliserais l'épargne, aucun sens tirant dans un autre cadre de RPC. Allez avec ce que vous avez et savez déjà. Thrift le rend si facile (tout comme les tampons de protocoles google, mais vous n'avez pas vraiment besoin de deux mécanismes différents)