2011-06-23 16 views
4

私はexec()を通して2つのコマンドを実行する必要があります。 最初のコマンドは(Pleskパネル)サブスクリプションを呼び出すラッパーで、 2番目のコマンドはdnsのpleskコマンドです。php exec複数のコマンド、Apacheの再起動

注:私は、追加のサブスクリプションを実行した後、Apacheは!

を再起動しますので、私の質問は: は、私は2番目のコマンドを損失することなくLinux側で両方のコマンドを実行するために、何らかの形でのexecを呼び出すことができますか?

例:

exec(("/wrapper2 3 --create ... && /wrapper2 4 --update-soa example.com ...) > /dev/null 2>&1); 

PHPが実行するためにLinuxの両方のコマンドを送信する、またはそれが最初のコマンドの後にApacheを再起動し、その後、私は2番目のコマンドを実行することはできませんか?

おかげ

+0

実際にはwrapper2とは何ですか?それはPHPスクリプトの場合はApacheとは別に実行されます – Leif

+0

execスクリプトにセミコロンを付けると、もう一方のスクリプトを実行し、その間に2番目のスクリプトを実行する前にApacheが再起動するのを待つ – FinalForm

+0

実行中にApacheを再起動してスクリプトを強制終了していると言われますか? – hakre

答えて

0

シェルスクリプトにコマンドを入力し、そのスクリプトを実行します。これはあまり複雑ではなく、あなたが他のツールでも呼び出すことができる場合に備えて、Apacheの再起動やcronのようなものです。

+0

私はグループ化を考えていません1つのファイルの下にあるコマンドは、そのスクリプト内の任意の場所にあるapacheを再起動するための呼び出しがある場合、プロセスが終了するように保護します。 – Julien

+0

@Julien OPがこの回答を受け入れるとは思わないされた場合。 – hakre

0

Apacheの再起動は、あなたのコマンドは、多くのシステムリソースに長すぎるか、コストを実行し、Apacheサブプロセスの終了を行い、なぜ私は思います。 mod_phpの代わりにfastcgiモードを使用してみてください。

シェルファイルを作成して2つのコマンドを実行できます。

+0

サブスクリプションを追加するとApacheが再起動するため(〜4秒) – Kszili

+0

あなたはApacheの設定を制御するためのWebパネルを書いていますか?:)別のものを使ってみてくださいプログラムをApacheを再起動し、他のコマンドを実行する方が良いでしょう。 fastcgiを試してみてください。それはApacheの外で実行されています。 – hanguofeng

2

ええと...私は悪い対処を考えています。一般的に、プロセスが実行を継続する必要がある間に、プロセスが親プロセスに再起動を指示するのは悪い考えです。しかし、たとえそれが良いアイデアであったとしても、ApacheはそのコンテキストでPHPの親プロセスです(ps -APHPは表示されません)、私はあなたがそれを再起動させ、同時。

私はこのようにアプローチします:遅延を橋渡しすることができれば、特定のファイルが存在するかどうかをcronジョブで調べて、必要な2つのコマンドを実行します。悪い場合には、PHP出力に実行する2つのコマンドを持つファイルを作成し、cronでそのファイルを実行させます。

+0

私はファイル+ cronを使用してあなたのアウトオブボックスのアプローチが好きですが、私はこのアプローチも考えていました。この答えは 'at'を使って見つけましたhttp://stackoverflow.com/a/223745/457589あなたはそれを考えるとき、 'at 'はスクリプトファイルを作成してそれを探しているので... cronを使ってそのホイールを再構築する必要はありません...' at'もcronが毎分実行されるときに即座に実行できるようになりました – Julien

1

私の理解では、Apacheが実行中のスクリプトの親であるという事実に問題があります。これは、Apacheがシャットダウンするときにスクリプトが実行されるためです。

あなたは一種のderp-y設定に対処することができないので、サーバを再起動する必要があるとき(タッチで作成したファイルかPHPからのもの)のいずれかを探すcronジョブを設定できます。 Apacheのプロセスのコンテキスト外のすべてを処理できます。

汚れたアイデア。 :

+0

私は同じことを考えた後、この答えを 'at'を使って見つけましたhttp://stackoverflow.com/a/223745/457589それを考えると、' at'はスクリプトファイルを作成してそれを探しています... cronを使用してそのホイールを再構築する必要はありません... 'at'もcronが毎分実行されるときに即座に実行することができます – Julien

関連する問題