私は2台のコンピューターを持っています。最初のコンピューターでは、すべてのWebコードでapacheを実行しています。2台目のコンピューターには、取得スクリプトを使用して大量のデータが保存されています(スクリプトの実行には通常数時間かかります)。私は基本的に、時間の遅れなしにこのデータにアクセスするためのWebUIを作成しています。
だから私は呼ぶ:
exec("bash initial.bash");
これは私のApacheフォルダーにあるドライバースクリプトです。他のコンピューターのスクリプトを呼び出します。呼び出し:
ssh otherMachine temp.bash&
このスクリプトは、2台目のコンピューターでデータ取得スクリプトを呼び出します。
ターミナルでinitial.bashを呼び出すと、すべてがスムーズに正常に機能しますが、PHPファイルで呼び出すと、.を除いて、initial.bash内のすべてのコマンドが実行されますssh otherMachine temp.bash&
。その最後に&を付けて、temp.bashがバックグラウンドで実行されるようにします。これは、完了するまでに数時間かかるためです。
Apacheによって呼び出されたときにネストされたスクリプトが実行されない理由がわかりません。execまたはshell_execを使用してスクリプトを呼び出し、最終的に別のスクリプトを呼び出すよりも優れた代替手段はありますか。2台目のマシンでスクリプトを直接呼び出さないのは、プログラムの実行に時間がかかるためです。Shell_execは、スクリプトが完了するまでphpページをレンダリングしません。