0

すべての回答の後に編集し、機能を更新しましたが、機能します

importfolder を読み込みます。このフォルダには、利用可能なさまざまなファイルがあります。

  1. ステップ: フォルダーを読み取り、ファイルを配列に追加します
  2. ステップ: すべてのファイルを開き、インポートを試みます

ファイルをインポートできない場合、この行の別のファイルを最初にインポートする必要があるときに、これが発生します。

例: ファイル「message to a address」を開いた場合、アドレスがデータベースに追加されていない場合、これをインポートできませんでした。しかし、このファイルリストの他のファイルには、「作成アドレス」ファイルがあります。これが作成されると、最後に「アドレスへのメッセージ」が filelistarray に追加されます。

私のコードは私にオフセットの問題を与えます:

function importData( $path, $db, $mail )
{
    //Get available Importfiles
    $filelist = getFilelist( $path );
    for ($i = 0; $i < count($filelist); $i++)
    {
        $filename = $path . "/" . $filelist[$i];
        $file = fopen( $filename,"r" );

        while(!feof( $file )) {
            $items = explode( ";", fgets( $file ) );

            //Get messagetyp
            if( strtolower(trim($items[0])) == "nachrichtentyp" )
            {
                $messagetyp = $items[1];
                break;
            }
        }
        fclose($file);
        if ( $messagetyp )
        {
            $f = "import" . $messagetyp;
            if( !$f($filename, $db, $mail) )
            {
                array_push($filelist, $filelist[$i]);

            }
        }
    }
}

要素をファイルリスト配列にプッシュすると、これは私のエラーです

PHP Warning:  feof() expects parameter 1 to be resource, boolean given in /var/www/symfony/importscript/import.php on line 37
PHP Warning:  fgets() expects parameter 1 to be resource, boolean given in /var/www/symfony/importscript/import.php on line 38
4

2 に答える 2

1

FALSE 以外の値を返すかどうかを確認する必要fopenがあります。ファイルの 1 つが存在しないか、制限されている可能性があります。

于 2014-03-05T09:07:38.893 に答える
1

エラーによると、問題は次の場所ではなく、array_pushfopen()の場所にあります。

$file = fopen( $filename,"r" );

php がそのファイルを開くことができない場合、変数 $file が に設定されfalse、そのためにfeof()エラーfgets()が発生します。

于 2014-03-05T09:07:52.533 に答える