2012-04-17 19 views
0

私はCプログラムを呼び出すPHPに裏打ちされたREST APIを持っています。入力に応じて、CプログラムはJSONデータを返し、PHPは出力を読み込み、それを直接クライアントに返します。PHPとCデーモン間の最も効率的なプロセス間コール

コードは、本質的に:APIの各呼び出しについて

$command = $binary . " " . $parameters; 
$output = shell_exec($command); 
echo $output; 

、PHPは、プログラムを起動し、いくつかの処理を行い、そして終了します。

Cプログラムをデーモンとして実行し、このデーモンにPHPバックエンド呼び出しを持たせることで、これをより効率的にしたいと考えています。

また、私はPythonのWebフレームワークに移行している可能性があります。そのため、クライアント側からクロスプラットフォームのものが必要です。

私は、デーモンをどこに置いても構いません(近い将来、同じWebサーバー上に置くことができますが、私はそれを最終的に外すことができます)。しかし、ソケットは十分に効率的ですか、それとももっと良い方法と思われるものがありますか?

+1

私は最近Gearmanを使用していますが、これは問題ありません。主にキューですが、何かが完了するまでPHPで待機したい場合は、ブロッキングワーカーを開始することもできます。私は労働者がほとんどの言語で書かれていると信じています - 私はPHPをもう一度使っていますが、Cは問題ないと思うべきです。 – halfer

+1

クロスプラットフォーム、クロス言語、分散、高速、素敵:http://www.zeromq.org/intro:read-the-manual – hakre

+0

可能な複製http://stackoverflow.com/questions/4789720/communicate-c- program-and-php/ –

答えて

1

Cプログラムの詳細を知らなくても、これに答えることは難しいです。

確かにチェックする価値のあるものはcreating a PHP extensionです。

これはクロスプラットフォームではありませんが、PythonやRubyにも同様の拡張機能を書くことができます。拡張部分はCプログラムの小さなスケルトンであり、書くのは簡単です。

+0

ありがとう、私のプログラムは実際にはユーザーの入力に基づいて文字列を返す小さなCプログラムです。だからまだ複雑ではありません。私はおそらくzeromqを調査するだろう、それは私が探しているものかもしれない。 – steve8918

+0

「PHP拡張機能の作成」(http://theserverpages.com/php/manual/en/zend.creating.php)**の404エラー**にリンクしてください。 –

関連する問題