2012-11-28 54 views
2

我有以下的調用exec在後臺運行腳本test.php。php exec無限循環

exec("/home/gooffers/test.php?one=one &"); 

腳本test.php的包含以下

$test = $_GET['one']; 
echo $test; 

然而,這是建立一個無限循環(的過程無限數目),其崩潰服務器。這是爲什麼發生。

+1

我們需要看到更多的獲取他們在您的代碼中如何使用exec()來查看主代碼中是否存在無限循環。 –

+0

@davis,這就是我在你的問題中看到的所有代碼。 – hedhud

+0

Hudhud - 感謝您的答覆 - 但一樣的,請您與兩個主腳本的全部內容(包含EXEC())和test.php的腳本更新您的帖子...通過完成我的意思是「 <?php「和全部 - 完整複製/粘貼整個文件。另外,你能否展示你如何執行你的主腳本?謝謝 –

回答

5

$_GET當您通過命令行運行腳本不是菱(PHP-CLI)。

看到這裏就如何將參數傳遞給命令行腳本在PHP中:How do I pass parameters into a PHP script through a webpage?

基本上,它是

exec("/home/gooffers/test.php arg1 arg2"); 

,然後通過

$argument1 = $argv[1]; 
$argument2 = $argv[2]; 
+1

'$ argv [0]'是指腳本文件(/home/gooffers/test.php),所以'$ argv [1]'等於第一個參數。但是你是對的,這是好方法。使用php進程,我習慣使用類似於:'list($ command,$ args)= array(array_shift($ argv),$ argv)''。 –

+0

@Ninsuo謝謝你指出,只是糾正它。 –

+0

通過在線閱讀網頁,我認爲可以按照我發佈的方式進行閱讀。雖然我還沒有驗證它,但由於某些原因exec由於某種原因不斷進入循環並導致服務器崩潰。您的文章似乎是正確的做法。我會嘗試一下,看看它是如何工作的。我仍然不明白爲什麼高管要進入循環。我在網上發現了很多關於exec和無限循環的帖子。有人建議我們在php上使用php-cli。不知道這是否會有所作爲。 – hedhud

-3

我不知道發生了什麼,但我認爲它應該是

exec("php /home/gooffers/test.php?one=one &"); 
+0

你可以像這樣在命令行上傳遞GET參數嗎? –

+0

。您的命令將工作,如果你使用wget,像'EXEC(「wget的HTTP://localhost/gooffers/test.php一個=一個&」)',但如果你使用PHP的CLI。 PHP cli使用類似C的nommage來獲取參數,所以'$ argc'和'$ argv'。 –