5

あらゆるもの、Web UI、数学的処理とモデリング、およびデータベース関連のもののバンドル全体を実行するWebアプリケーション(かなり重いもの)があります。

PHPで発生するプロセスの多くは非常に遅いですが、これは主にPHPが数学的な処理を嫌うためです。

将来的には、これらの遅いプロセスを中断し、より高速なもの、おそらくC ++、またはおそらくJavaで書き直したいと考えています。

PHPにデータを出し入れし、別の言語の環境にデータを取り込む一般的な方法を知っている人はいますか?私はすでに物事をJSONにシリアル化し、それらを/ dev / shmまたはソケットにシャブリングしてから、他の言語にソケットでリッスンさせるか、共有メモリの場所などを調べることを検討しました。

このようなことはネイティブタイプでは問題なく機能しますが、渡されるものの多くが実際にはクラスインスタンスや同様のオブジェクトであると考えると、非常に困難です。

賢明な解決策はわかりませんが、純粋なJavaであるQuercus PHPの実装と、PHP/Javaブリッジを検討してきました。
ただし、同様の機能を実行するC++用のものを見つけることができませんでした。PHPモジュールを作成することは可能ですが、新しい(および古い)スクリプトをモジュールに書き直してからPHPでそれらの関数を呼び出す場合だけでなく、それが十分に一般的であるかどうかを確認するのに苦労しています。

4

5 に答える 5

5

Google プロトコル バッファ

プロトコル バッファ

それは何ですか?

プロトコル バッファは、構造化されたデータを効率的かつ拡張可能な形式でエンコードする方法です。Google では、ほぼすべての内部 RPC プロトコルとファイル形式にプロトコル バッファを使用しています。

<引用符>

言語で定義したオブジェクトの高速かつ効率的なシリアル化を.protoサポートし、C++/Java をネイティブにサポートし、サードパーティのアドオンを使用して PHP をサポートします。

于 2011-05-16T13:49:01.483 に答える
3

Gearmanをご覧ください:http://gearman.org/

他の言語のヒープの中でも、CとPHPで動作します。ただし、C++は明示的に記述されていません:(

ブリッジとして機能するほかに、ロードバランサーとして機能し、システムの冗長性を提供できます。

私はそれを自分で使用したことはありませんが、それはかなり素晴らしいようです:)

編集:Gearmanはデータをシリアル化する必要があるので、その点ではマイナスです。

于 2011-05-16T13:46:28.007 に答える
2

現在、PHPコードでC++ライブラリを呼び出すためにzendフレームワークを使用しています。それはあなたが探しているものかもしれません。

乾杯!

于 2011-05-16T13:47:33.917 に答える
1

最近、Hiphopオプティマイザーに出くわしました。Facebookはこれを使用しています。経験から話すことはできませんが、それはあなたが必要としているものかもしれません。 https://github.com/facebook/hiphop-php/wiki/

それがあなたのニーズに合っているかどうか見てください:)

于 2011-05-16T15:46:20.093 に答える
1

Vettrasoft Z ディレクトリのレイヤー 10 コンポーネントである「PHP ファイル オブジェクト」の開発を完了しました。このオブジェクトを使用すると、ドキュメントに埋め込まれた PHP コードの「前処理」を C++ プログラムから呼び出すことができます。アプリケーション コードは次のようになります。

int i;
file_o f_in("mytemplate.txt"), f_out("my_output.txt");
rec_dbag_o bag;
phpfile_o my_php (f_in);

for (i=0; i < 9; i++)
{
    my_php.process(f_out, bag);
    // --do something with 'f_out' (PHP generated output file)--
}

ここでの考え方は、入力ファイル (上記の例では「f_in」) は、PHP コード (または単なる PHP ファイル) を含む「テンプレート」ファイルであるということです。生成された出力は 'f_out' [上記] に入ります。通常、これはループになります。データバッグ (上記の「バッグ」) からのデータは PHP プロセッサに提供され (データバッグは XML に代わる Vettrasoft の代替手段です)、C++ アプリから PHP コードにデータを転送します。

上記の代替手段のいくつかとは異なり、プログラムを Z ディレクトリ ライブラリにリンクするだけです。ただし、同じマシン上にネイティブ PHP 'CLI' [コマンドライン インターフェイス] プロセッサ (「SAPI」プログラム) が必要です (「http://localhost/somfile.php」を実行できる場合は、おそらく PHP が必要です)。構成済み)。

これは実際には Z ディレクトリへの最新の追加であり、この記事の執筆時点 (2012 年 6 月 27 日) ではまだリリースされておらず、「C++/PHP ブリッジ」と呼ばれています。それは今日アルファ版を通過し、次のリリース (ZP9/b13) - 7 月中旬頃に含まれる予定です。友人がstackoverflow.comのこの投稿を指摘しました。タイミングが偶然だったので、これを読んで目を見張るものがありました。

于 2012-06-28T02:55:52.007 に答える