0

特定の情報を抽出し、それぞれを JSON 形式で保存するスクリプトを作成して、600 個の XML ファイルを実行する必要があります。600 個の XML ファイルはすべて、PHP ファイルを実行する準備ができているフォルダー内にあります。私は今、それを実行するための高速な方法を探しています。

基本的に、これは PHP ファイルが通過するプロセスです。

PHP は URL 経由で単一の XML ファイルを読み取ります -> 重要な情報を変数にローカルに保存します -> 重要な情報を JSON ファイルに保存します

PHP ファイルを介して 600 個の XML ファイルすべてを何らかの方法で実行する方法はありますか?

ありがとう

4

4 に答える 4

1

XML ファイルを含むディレクトリを開き、それらを処理します。これを行う最も一般的な方法を次に示します。

opendir()

<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}
?>

glob()を使用することもできます

<?php
foreach (glob("*.txt") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}
?>

選択した foreach ループ内でfile_get_contents()またはfread()を使用すると、json に変換できます。

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

それが役に立てば幸い

于 2013-09-06T22:52:35.917 に答える
0

さあ、試してみてください!タイムアウト エラーが発生する可能性があります。その場合は、最大タイムアウト設定を構成してみてください。http://php.net/manual/en/function.set-time-limit.php

于 2013-09-06T22:38:54.247 に答える
0

最初に、XML ファイル名を取得する関数を作成し、処理後に結果を php 配列または JSON で返します (必要なコードに基づいて)。

この関数を記述するには、XML ( http://php.net/manual/en/book.xml.php ) を解析する必要があります。

PHP で JSON を操作するには: http://php.net/manual/en/book.json.php

次に、メイン コードを記述します。メイン コードは、フォルダー内のすべての XML ファイルを列挙し、各ファイルに対して関数を呼び出し、関数によって返された情報を使用して JSON を収集/生成する必要があります。

readdirフォルダー内のすべての XML ファイルを収集する必要がある場合があります。( http://php.net/manual/en/book.xml.php )

XML ファイルが多く、処理に時間がかかり、タイムアウト エラーが発生する可能性がある場合は、制限時間を長くすることを忘れないでください。( http://php.net/manual/en/function.set-time-limit.php )

于 2013-09-06T22:56:13.930 に答える
0

ジョエル

readdir を使用する必要があるように思えます

http://php.net/manual/en/function.readdir.php

これにより、反復するディレクトリ内のファイルのリストを取得できます。

$dir = opendir('/path/to/files');
while($file = readdir($dir)) {
    if ($file !== '.' && $file !== '..' && !is_dir($file)) {
        $parthParts = pathinfo($file);
        if ($pathParts['extension'] === 'xml') {
            runscripton($file);
        }
    }
}
closedir($dir);
于 2013-09-06T22:45:57.650 に答える