0

以前にこの質問を見たことがあるので、繰り返して申し訳ありませんが、私の問題に対する答えはまだ見つかりません.

実行に時間がかかる bash スクリプトがあります。Webページでユーザーが設定した変数を渡す必要があります(セキュリティなどのために十分な検証があることを心配しないでください)

bash ファイルを起動することはできますが、Web ページから実行すると、おそらく 20 秒後に停止します。

ターミナルから実行すると、まったく問題なく実行されます。

わかりましたので、私は次のものを持っています:

$bashFile = shell_exec('./CoinCreationBashFile.sh "'.$coinName.'" "'.$coinNameAbreviation.'" "'.$blockReward.'" "'.$blockSpacing.'" "'.$targetTimespan.'" "'.$totalCoins.'" "'.$firstBitAddy.'" "'.$seedNode.'" "'.$seedName.'" "'.$headline.'" ');

これでb​​ashファイルが実行されますが、nohupを使用してShell_exec phpについて調べたところ、次のようになりました。

$bashFile = shell_exec('nohup ./CoinCreationBashFile.sh "'.$coinName.'" "'.$coinNameAbreviation.'" "'.$blockReward.'" "'.$blockSpacing.'" "'.$targetTimespan.'" "'.$totalCoins.'" "'.$firstBitAddy.'" "'.$seedNode.'" "'.$seedName.'" "'.$headline.'" >/dev/null 2>&1 &');

しかし、これはまだ短時間で死亡しました:(

したがって、set_time_limit と max_execution_time について調べて、これらを php.ini ファイルで 10000000 のように設定します....それでもまだ喜びはありません :(

タイムアウトや終了せずに bash スクリプトを実行したいだけです。そこに中間ステップを入れる必要はありませんが、ZeroMQを見て「ワーカーをプロセスから切り離す」ことを誰かが提案したので、このルートに行かなければならないかもしれません。

よろしくお願いします

4

1 に答える 1

1

60 秒以上かかる場合は、ブラウザ経由でスクリプトを実行しようとしないでください。代わりに、SSH または cron ジョブとして実行してみてください。

于 2013-07-30T21:57:29.803 に答える