ここでは、私の流れを詳しく書いています。
同じホストで Ajax リクエストを実行しています。への AJAX 呼び出しsaveUser.php
にsaveUser.php
、含めておりますCommon.php
。
Common.php
持っcreateFile1()
てcreateFile2()
機能します。
createFile1()
関数はsample1.php
、別の目的で を作成するだけです。
ではcreateFile2()
、ファイルを作成し、そのファイルsample2.php
を実行するexec('php /home/public/sample2.php > /dev/null &');
コマンドを実行しています。
私はこれcreateFile1()
を呼び出しており、AJAXリクエストによって呼び出されているcreateFile2()
関数をそれぞれ呼び出しています。saveUser.php
コマンドの最後に' ' を付けて exec コマンドをバックグラウンドで実行するように設定して&
いるため、応答を待たずに戻り、すべてがスムーズに処理されます。
しかし、サーバーをチェックしていると、これらのファイル sample1.php と sample2.php が何度も作成されています。SSHからプロセスsaveUser.php
を停止するまで、このすべてのアクションが何度も実行されているようです。sample2.php
php /home/public/sample2.php
「 」が を持つたびにプロセスリストをチェックしたnew process_id
ので、何度も実行されていることが確認されました。コードを削除してexec()
、SSH からこの sample2.php を実行すると、期待どおりに動作し、そのような問題はありません。
何が間違っているのか教えてください。サーバーの構成に問題はありますか。hostgator 共有アカウントを使用しています。
また、同じCommon.php
ファイルsample2.php
も含めて、役立つ場合に備えて通知します。
事前にご協力いただきありがとうございます。
saveUser.php コード
include_once dirname(__FILE__).'/Common.php';
createFile1();
createFile2();
echo 'saved successfully!';
Common.php コード
function createFile1()
{
$template = file_get_contents('sendDmTemplate.php');
$serviceFp = fopen('sendDmFiles/sample1.php',"w");
fwrite($serviceFp , $fileContent);
fclose($serviceFp);
}
function createFile2()
{
$fileContent = file_get_contents(dirname(__FILE__).'/sampleFileTemplate.php');
$serviceFp = fopen('sample2.php',"w");
fwrite($serviceFp , $fileContent);
fclose($serviceFp);
exec('php '.dirname(__FILE__).'/sample2.php > /dev/null &');
}
sample2.php コード
include_once dirname(__FILE__).'/Common.php';
echo 'hi';