2014-02-07 74 views
1

有一個問題,我找不到確切的問題,或者它是一個問題,無論如何我不知道。php shell_exec觸發兩次工作

我通過shell_exec在php下執行命令。我是用戶,我只打了一次。

捲曲-o ./server.log --request POST 'crawlserver.xxx.local/workerCallback.php' --user劑 'xxx' 的--data「workerid = worker1 &作業ID = 25 & offercount = 72 & file ='/ path/to/xxx-2014-02-07-serialized.txt'

此命令的工作時間爲30秒。

當我問到bash作爲ps aux | grep workerCallback

我看到2個不同的命令觸發,並且不同的進程ID,而。但是,當查看server.log文件它正在尋找一個請求,我也檢查數據庫和其他東西,請求工作單一。但爲什麼它在命令行中通過不同的pid來查看兩次,並且命令幾乎沒有區別。命令前的「sh -c」是什麼。

1000 27384 0.0 0.0 4404 612? S 14:00 0:00 sh -c curl -o ./server.log --request POST'crawlserver.xxx.local/workerCallback.php'--user-agent'xxx'--data'workerid = worker1 & jobid = 25 & offercount = 72 & file = path/to/xxx-2014-02-07-serialized.txt'

1000 27385 0.0 0.0 88056 3756? S 14:00 0:00 curl -o ./server.log --request POST crawlserver.xxx.local/workerCallback.php --user-agent xxx --data workerid = worker1 & jobid = 25 & offercount = 72 & file =/path/to/xxx-2014-02-07-serialized.txt

+1

1.打開一個shell來執行命令2. exec命令= 2級的任務 – DanFromGermany

+0

當你做'的ps aux | grep workerCallback'你也必須得到2-4個處理器,一個是ps,一個是grep,一個(或多個)是結果 – DanFromGermany

+0

是丹,我現在明白了。謝謝。 – FZE

回答

3

它的命令不是兩次相同,第一個命令是shell(sh)運行你的curl命令。

第二個是命令本身。

所以,你的代碼是工作的罰款:)

+0

結果顯示我的工作正常:)但我無法理解這裏的邏輯你能給我詳細的解釋嗎? – FZE

+0

你必須考慮shell exec的作用。它使用shell(sh)來運行命令。在Linux中,當你運行任何命令時,你很可能會使用諸如sh或更常用的bash之類的shell。這就是這裏發生的事情 – edmondscommerce