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' –