0
我有功能build_additional_docs
調用另一個功能,做很少的行動,但首先它調用函數read_all_file
,它將文件提取到字符串變量並返回它。php fgets功能卡住服務器
當功能create_file_node
被另一個函數調用時,它的工作很完美。
,但是當它從build_additional_docs
調用,客戶端等待服務器,直到超時...... 我認爲功能上fgets()
失敗。
附加註釋:當我打電話功能create_file_node
蒙山具有相同的文件,而不同的是,文件名是靜態的字符串,我也沒有foreach循環,代碼工作又...
這裏是我的代碼:
function build_additional_docs($dir_name, $addDocsArr){
foreach ($addDocsArr as $doc) {
if($summery != ''){
$fileName = $dir_name . '\\' . $doc;
create_file_node($fileName);
}
}
function create_file_node($fileName){ global $base_url;
try{
$text = read_all_file($fileName);
}
catch (Exception $ex){
// some message here
}
return 0;
}
function read_all_file($file_name){
$file_handle = fopen($file_name, "r");
while (!feof($file_handle)) {
$line[] = fgets($file_handle);
}
fclose($file_handle);
return implode('',$line);
}
使用set_time_limit(0)增加執行 – shail
如果你有太多的文件,php timelimit不夠(不能總是用'set_time_limit()'增加),你可以建立一個包含你的文件路徑的數組想要掃描,將其寫入會話變量並逐個執行。每隔30秒左右(取決於時間限制),您可以重定向到同一頁面,並從會話變量中執行下一批文件。通過這種方式,您甚至可以顯示各種進度條,並且用戶在等待時知道發生了什麼。 –
順便說一句,你的函數'read_all_file()'似乎是重新實現的PHP函數'file_get_contents' –