-1

同じコンピューター(Win XP)でスクリプトweb.rb(sinatra)とrufus.rb(rufus gemを使用したcron)を実行しています。どちらもfunctions.rbを使用しており、すべての関数があります。Webサーバーが実行した/実行しているコマンドの履歴を格納する配列変数$webserver_statusがあります。Webサーバーはいくつかのdosコマンドとphpスクリプトを実行します。一度に実行できるのは1つだけであり、ユーザーに何が起こっているのかを概観してもらいたいと思います。

以前はhttp経由でcronジョブ(rufus.rb)を実行していたので、実際にはブラウザーからWebサーバーにアクセスします。したがって、ステータス変数は正しく更新されました。ここで、functions.rbから同じコードを呼び出し始めたため、変数に正しいサーバーステータスが表示されなくなりました。

cronが$webserver_status変数に直接アクセスする方法はありますか?

または、httpを介して変数を更新する必要がありますか?または、ディスク上のある種のステータスファイルですか?

  • ルビー1.8.7(2010-08-16パッチレベル302)[i386-mingw32]
  • Webサーバーは常に実行されます
  • cronコードの製品版とテスト版があります
4

2 に答える 2

2

この回答で私が行った提案を参照してください。私があなたのシナリオで何かを見逃していない限り、質問は本質的に同じでした。あなたのニーズに応じて多くの可能な解決策があります。

編集

あなたのコメントに基づいて、2つのrubyプロセス間でメモリを共有するか、プロセス間で通信したいと考えています。ルビーのIPCについて読んで、UNIXソケットをニーズに合わせる方法を確認してください。

2つのプロセスで同じ変数にアクセスすることについて話すのは、実際には意味がありません。ソケット、データベース、ファイルのいずれであっても、ある種の仲介者を経由する必要があります。これが希望どおりでない場合は、状況と、このようなものではなく、メモリへの共有アクセスが必要な理由を明確にすることをお勧めします。

于 2012-05-24T15:10:26.410 に答える
1

私はこのようなものがあなたが探しているものだと思います:

#web.rb
require './functions'

print_value("apple")

#rufus.rb
require './functions'

print_value("not apple")

#functions.rb

def print_value(value)
  puts value
end

web.rbを呼び出すと、文字列Appleが返されます。

于 2012-05-24T00:36:27.770 に答える