|
|
perl側からPHPに引数を渡して呼び出し、PHP側で引数をもとに値を作成して返すようにする方法を調べてみました。
perlでPHPを呼ぶ方法にsystem関数がありますが、これだと戻り値が実行OK・NGのみになってしまい使えませんでした。
なんとか戻り値が取れないか調べましたところ、他にも方法もあると思いますが、以下のようにしたら、一応なんとかうまくいきました。
perl側プログラム system関数ではなく「`」で囲む方法で実行しました。
#!/usr/bin/perl
my $ans = `/usr/local/php5/bin/php -f test.php5 aaaa bbbb`; print("return:" . $ans);
PHP側プログラム $argvから引数を受け取り結果を「echo」で出力します。 「echo」で出力すると、呼び出し元のperlの変数に値を返すことができます。
< ?php echo $argv[1] . "&" . $argv[2]; ? >
猫の手 高室(たかむろ) |
■コメント
バッククオートはPerlもRubyも基本ですね。
ただし、PHPのスクリプトを起動する時、Perlなどから、system関数やバッククオートで起動すると、 CGIの様に別プロセスで起動してしまいます。
つまり、Apacheで起動しているPerlで作ったCGIから、PHPを上記の方法で起動するということは PHPもCGIで起動してしまいます。
PHPの有効性はmod_phpにあるといっても過言では無く、つまり、Apacheと同プロセス上で起動することで、負荷が低く、高速に動作させられることにあります。
どういう意図でPerlからPHP起動させたいか判りませんが、ここら辺も考慮に入れられてはいかがでしょう。
|
名前: 別プロセスで走りますが ¦ 11:40, Friday, Jul 23, 2010 ×
ご掲示頂きありがとうございます。 お名前が分からないので敬称は省かせていただきます。
>どういう意図でPerlからPHP起動させたいか判りませんが
perlとphpそれぞれで開発された資源があるので、それらをなんとか有効利用できないかと言うことです。。
とりあえず、今回は時間的に余裕がなかったので、「動ケバよい」と言うことを先決にしましたので、この方法を使いました。 今後、ご掲示頂きました内容は検討に生かさせていただきます。
|
名前: 猫の手 高室 雉彪 ¦ 12:52, Friday, Jul 23, 2010 ×
■コメントを書く
|
|