2

Ruby で実行しているスクリプトと PHP で実行しているスクリプトがありますが、私のニーズでは、すべてを同じスクリプト言語で実行することはできません。

PHP を使用して Ruby で変数を作成したいと考えています。現在、私はこのコードを持っています:

PHP:

$config = fopen("config.txt","w+");
fwrite($config,$sArguments);
fclose($config);

ルビー:

while true do
file = File.new("config.txt", "r")
config = file.gets
file.close
end

PHP が次の構成をファイルに書き込み、Ruby がそれを読み取って変数に変換します。これは機能しますが、Ruby はファイルの読み取りと読み取りに取り組む必要があり、正しく読み取れない場合があるため、このコードの最適化は非常に不十分です。

PHPスクリプトからRubyスクリプトに情報を渡すより速い方法はありますか?

4

2 に答える 2

0

与えられた情報から正確に何が問題なのかを判断するのは難しいですが、Ruby が読み込めないことがあると言うと、PHP が書き込みの途中でファイルを読み込んでいるのが Ruby スクリプトであると推測されます。

簡単な修正方法は、PHP で一時ファイルに書き込み、一時ファイルを移動または名前変更して、Ruby スクリプトで取得できるようにすることです。移動/名前変更はアトミックであるため、半分書き込まれたファイルが読み取られる可能性はありません。

あなたも行うことができるいくつかの改善:

  • listen gemのようなものを使用して、更新時にのみファイルを読み取ります。
  • どのデータを渡しているのかわかりませんが、交換形式として YAML などを使用できます。解析例外をキャッチし、受信したデータをログに記録して、デバッグを支援します。

一歩下がって、「本物の O/S」を使用している場合、より簡単なオプションは、永続性が問題にならないと仮定して、Unix ソケットを介してメッセージベースの IPC を使用することです。この「 Ruby での IPC の紹介」のページを見て、プロセス間でのメッセージの受け渡しの例を示した優れた紹介をご覧ください。

于 2013-03-26T01:42:21.383 に答える
0

私は PHP の専門家ではありませんが、「Python から Ruby コードを実行する方法 (Python-Ruby ブリッジ)」は、2 つの言語間の通信を実現する方法をいくつか提供していると思います。このページでは Ruby と Python の通信について述べていますが、いくつかの提案は Ruby と PHP で実装できると確信しています。

1 つの解決策は、XML-RPC を使用して単純なデータ型を PHP から Ruby に転送することです。Ruby は XML-RPC をネイティブでサポートしており、XML-RPC のサポートを可能にする PHP 用のライブラリーがあると思います。

パイプも使えます。つまり、Ruby の を介して PHP スクリプトを呼び出しますIO.popen「パイプを使ったRuby-Python通信の実現可能性」でRuby-Pythonでも似たようなことをしましたが、あまり性能を評価していません。

于 2013-03-26T02:06:50.693 に答える