2009-10-01 8 views
17

私はどこかでPHPが単に速くなく、コンパイルされたコードが時には "重い作業をする"ことがあると読んでいました。C++コードを使ってPHPとやりとりするにはどうすればよいですか?

これを行うためのC++のAPIは何ですか?

+2

を訪問する

click here、および最初にPHPで改善できるかどうか確認してください。 言語XからC++への移行を可能にするほとんどのインターフェイスは、C++で拡張機能を記述すると奇妙に見えます。 – Calyth

答えて

32

PHPには、でプログラミングされた関数/クラスを追加することができます(Cでクラスをラップすることもできます。 )、いくつかのことをもっと速くすることができるかもしれません。プログラムがうまくいけば、PHPコードの解釈は必要ありません。マシンコードの実行のみですが、これは一般的に高速です。

これを行うには、PHP拡張子を開発する必要があります。


ありそれについては、インターネット上で利用できる多くressourcesではないが、これらのいずれかが、あなたが開始するために役立つかもしれない:

そして、特にC++の部分については、これはあまりにも役立つかもしれない:


をあなたが本当に対象による興味を持って、その上にいくつかのお金を使う準備ができているならば、あなたは可能性本も買うExtending and Embedding PHPsome pages are available as preview on Google Booksも);私は、ときに、この主題に興味BTW(実際には、私はいくつかの時間前にそれを買ってきた、そしてそれは面白い読み取ります)

を読むために本だったという回のカップルを見てきましたその本の著者はまた、私は希望このヘルプ;-)


にリンクされている最初の4つの記事の著者である...
は、お楽しみに!

+0

この情報をお寄せいただきありがとうございます。本当に助かりました! – qodeninja

+0

PHPエクステンションでラップされたC++クラスは、PHPで書き直すより速く実行されると言われますか?これにはどんな利点がありますか? –

+0

リンクありがとう。素敵な記事 – Confused

9

APIの任意の並べ替えなしにあなたがすることができ、実際にexecuteコンパイルされたアプリケーション:それを超えて

$output = exec('/path/to/yourapp'); 

、あなたは常にPHP拡張モジュールを書くことができます。 http://devzone.zend.com/article/1021

+2

+1はPHP拡張で、exec()では-1です – LiraNuna

+2

@Lira:どうしてですか? – brianreavis

+0

escapeshellarg()またはescapeshellcmd()が使用されていない場合、攻撃者が大量のコマンドラインを関数に渡すと、exec()は大きなセキュリティ上の脆弱性です。 – mosid

1

あなたが何をしようとしているのかはまだ明確ではありませんが、C++インターフェイスが必要な場合は、ソースコードのextディレクトリを見て、ロードして使用できるPHP拡張機能を記述する方法を理解してくださいあなたのPHPスクリプトから。

役立つかもしれないリンクのカップル:

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

6

swig, the Simplified Wrapper and Interface Generatorは、PHPモジュールに(既存の)C++を包むことができます。

SWIGは、CおよびC++で書かれたプログラムとさまざまな高水準プログラミング言語を結びつけるソフトウェア開発ツールです。 SWIGは、Perl、PHP、Python、Tcl、Rubyなどの一般的なスクリプト言語を含むさまざまな言語で使用されます。
+0

ちょうどSWIGを使って非常に単純なC PHPラッパーを作成しようとしました。完璧に非常に簡単に働いた。 –

0

SWIGを試しましたか?あなたの問題のための良い解決策のようです! PHPとC++の混合に見る前に、私は、プロファイルを言うと、あなたが遅いPHPのセクションを見つけることを確認したいSWIGのWebページ(ドキュメントはしかしあまり友好的ではないかもしれません!)

関連する問題