0

私は、データベース (My SQL)、Web サイト (PHP)、およびカスタムの高性能サーバー アプリケーション (C++) を含むプロジェクトに取り組んでいます。C++ アプリケーション (およびそれに付随するクライアント アプリケーション) は、プロジェクトの主要な部分を構成し、長期データを格納するデータベースを備えています。ウェブサイトは主に、さまざまな統計と管理を表示するためのものです。

1) PHP スクリプトと C++ アプリケーションが何らかの方法で通信できるようにしたい。データベースは永続データにのみ使用され、さらに C++ アプリケーションはいくつかのものをキャッシュする可能性があるため、場合によってはデータをリロードするように指示する必要がある. それらが異なるマシン上にある可能性が高く、OS が異なる可能性さえあります。TCP がいくつかの単純なコマンド - 応答プロトコルで最適なオプションである可能性があるという考えを検討してきましたか?

2) 共通のデータベース インターフェイス コードを 1 回記述し、それを PHP Web サイトと C++ アプリケーションの両方から使用できるようにするための最良の方法は何ですか?

4

8 に答える 8

3

1) データベースを使用して通信します。C++ アプリケーションは、次のことができます。

select * from table where some_last_modified_timestamp > '<last time checked>';

2) PHP と C++ の両方で、ハードコーディングされたクエリよりもストアド プロシージャを使用します。

于 2009-12-04T23:05:51.677 に答える
1

1) TCP もお勧めします。リクエストとレスポンスの複雑さに応じて、おそらくアドホック テキスト プロトコルを選択するか、XML を使用します (特に、レスポンスまたはリクエストが構造化されていて複雑な場合に適しています)。XML を使用する場合、独自のパーサー/ジェネレーターを作成する必要はありません。XML-RPC を試してみることもできますが、私はまだ実際の経験がありません。

于 2009-12-04T23:36:23.893 に答える
1

PHP と C++ の両方で同じ SQL を使用する最善の方法は、準備済みステートメントです。

通信する良い方法は、一方がサーバー (custom/soap/rest) をホストし、もう一方が接続することです。PHP はホストと接続の両方を簡単に行うことができます。そのコードは C で記述されているため、C++ でも簡単なはずです。

Eric Seppanen が提案するような PHP 拡張機能を作成することは、プロジェクト ID の範囲と必要性をはるかに超えています。

于 2009-12-04T23:36:33.177 に答える
1

#1:異なるOSを使用している場合、TCPはまともなアイデアのように思えます.

#2: C ライブラリが必要なようで、それを C++ (自明) と PHP の両方から呼び出します。Google で検索すると、C での PHP 拡張機能の記述に関する多くの記事が返されます。次に例を示します。

http://devzone.zend.com/article/1021

http://www.devarticles.com/c/a/Cplusplus/Developing-Custom-PHP-Extensions-Part-1/

于 2009-12-04T23:09:26.073 に答える
1

PHP にデータベースへのアクセスをまったく許可しないようにしてください。C++ アプリにすべてのデータベース作業を行わせ、PHP サイトにデータを提供させます。C++ アプリの一部を PHP のサーバーとして実行して、そこからレポートなどをフェッチすることができます。

于 2009-12-04T23:13:32.137 に答える
0

私のアプローチは、SWIG を使用することです。私はpythonで使っていますが、PHPもサポートしています。

その後、スクリプトから使用するのは非常に簡単です。

他の解決策は、RPC である可能性があります (これにより、サーバーと PHP アプリケーションを別の場所に置くことができます)。

于 2009-12-04T23:13:06.780 に答える
0

私はここで初心者なので、私の考えがひどく悪い場合はご容赦ください。

しかし、TCP 経由で XML を転送できないのはなぜですか。C++ TCP サーバーと PHP TCP クライアントを用意します。PHPにはかなり強力なソケットAPIがあると思います

于 2009-12-05T04:44:47.953 に答える