1

PHPスクリプトを使用してLinuxでシェルスクリプトを呼び出しています。次のようにします。

shell_exec('./shell_script.sh');

この後、PHPスクリプトは続行されます。これはすべて期待どおりに機能します。

ただし、何らかの理由でshell_scriptの実行が終了しない場合があるため、次の質問があります。

x時間実行した後、shell_script.shを終了するにはどうすればよいですか?これはPHP自体で何らかの方法で処理する必要がありますか(この場合は可能だとは思わないでください)、それとも.sh自体で処理する必要がありますか?

したがって、直後:

#!/bin/bash

.shの先頭で、実行時間がたとえば20秒を超えた場合に、.shを終了させることができるものはありますか?

4

2 に答える 2

3

phpでそれを実行できるかどうかはわかりません。また、bashでより良い解決策が存在する可能性がありますが、これが実行できることです。

#!/bin/bashこれは、 20秒後に現在のスクリプトを強制終了するために直後に配置できる行です。

(sleep 20 && kill $$) &

bashは、$$を現在のスクリプトのpidに置き換えます。

于 2012-07-16T20:59:36.293 に答える
1

次のようなものを使用できます。

# start timer
( sleep $TIMEOUT ; kill $$ ) 2>/dev/null &
TIMER_PID=$!

# "payload"
echo hello

# cancel timer
kill $TIMER_PID

YMMVですが、私のテストでは、タイマーをキャンセルするはずの部分が強制終了しないことがsleepあり、プログラムはタイムアウトが終了するまで待機します。

于 2012-07-17T12:19:23.247 に答える