2012-07-02 39 views
3

我似乎無法找到一個明確的答案。PHP exec()使用內存

當使用PHP中的exec()調用shell命令時,shell命令使用的內存是否會計入PHP腳本的內存限制?

我意識到如果該命令生成大量輸出,並且該輸出在exec()$ouput(秒)參數中被捕獲,那麼返回的數據可能會導致PHP內存限制。但是,假設所有輸出都發送到文件,如果exec()命令需要運行128M的內存,那麼是否應該有一個內存限制爲64M的PHP腳本能夠運行它?

<?php 
exec('command_using_128M_memory >/dev/null 2>&1'); 

我假定PHP5.3 +

回答

6

exec()命令不會因爲處理從PHP過程中單獨執行的不不直接朝向PHP計數。話雖如此,如果您在命令中使用任何輸出變量,他們會計入極限。

所以,如果你有一個文件產生了很多詳細的日誌記錄,並且你正在捕獲日誌記錄,它會計入內存限制。

+0

謝謝。我懷疑這可能是這種情況,但在依靠它之前需要確定。我猜PHP跟蹤了* it *直接分配給腳本的內存,但不關心任何子進程爲自己請求的內存。 – Jason

+2

我不太確定這是否正確。我有PHP使用exec()內存不足,沒有指定返回。 –