在這裏我寫了關於我的流程的詳細信息。PHP exec()一次又一次地重複執行相同的腳本
我在同一主機上做了一個Ajax請求。 AJAX致電saveUser.php
在saveUser.php
,我已包含Common.php
。
Common.php
有createFile1()
和createFile2()
功能。
createFile1()
函數只是創建一個sample1.php
爲另一個目的。
in createFile2()
,我正在創建一個文件sample2.php
並執行exec('php /home/public/sample2.php > /dev/null &');
命令來執行該文件。
我打電話給createFile1()
和createFile2()
函數分別從saveUser.php
這是由AJAX請求調用。
因爲我已經設置了exec命令在命令結尾處由'&
'在後臺運行,它在返回時沒有等待響應,並且一切順利。
但是,當我在我的服務器上檢查時,這些文件sample1.php和sample2.php一次又一次地被創建。似乎所有這些saveUser.php
操作都會一再執行,直到我停止SSH的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';
也許嘗試'include_once' /'require_once'? –
感謝David,我正在使用include_once來包含任何文件。 –
您能否檢查saveUser.php上沒有多個AJAX調用? –