2013-12-13 33 views
1

我有一個很大的函數,那我必須調用一個50-100次。以前我用的bash腳本這樣的:在單獨的進程中運行函數以避免段錯誤

#!/bin/bash 
for i in {1..50} 
do 
RET=0 
until [ ${RET} -eq 1 ]; do 
    php /scripts/cli.php $i 
    RET=$? 
done 
done 

但是,當我需要enchance logicwith返回的值不是我真的在bash腳本好,所以我試圖用這樣的一個函數來實現這個純PHP:

<? 
require_once('cli.php'); 
for($cnt=1; $cnt<=50; $cnt++){ 
$cli = cli($cnt); 
} 
?> 

但是這種方法在10-15個週期後導致分段故障。是否有可能在單獨的進程中運行函數loke它是在bash腳本和清理資源以避免內存泄漏?

回答

1

是的,如果您需要訪問子進程stdin/stdout/stderr,或者可以使用更簡單的函數:exec()或passthru(),則可以查看proc_open。

這就是說.. PHP不應該segfault,必須有你使用的某種錯誤擴展。我會更專注於解決這個問題,而不是創建解決方法。