0

いくつかのアクションを実行する別の関数build_additional_docsを呼び出す関数がありますが、最初は関数の呼び出しですread_all_file。これは、ファイルを文字列変数に抽出して返します。

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);
}
4

1 に答える 1

1

間違いを見つけました!$ addDocsArr変数は、分割された文字列から分離されたファイル名へのexplode()関数からの戻り値です。返される配列には、表示できない 空間文字を含むファイル名の文字列が含まれています...したがって、コードを追加すると、次のようになります。$fileName = $dir_name . '\\' . substr($doc, 0,strlen($doc) - 1);

コードは機能しました。

于 2012-09-11T11:12:03.597 に答える