通过单个PHP脚本运行数百个文件

时间:2013-09-06 22:35:58

标签: php xml

我需要通过我制作的脚本运行600个XML文件,该脚本提取特定的信息并以JSON格式保存每个信息。所有600个XML文件都在一个准备好通过PHP文件运行的文件夹中,我现在正在寻找一种快速的方法来实现它。

基本上这是PHP文件经历的过程:

PHP通过URL读取单个XML文件 - >在本地保存变量中的重要信息 - >将重要信息保存到JSON文件

有没有办法可以通过我的PHP文件以某种方式运行所有600个XML文件?

由于

4 个答案:

答案 0 :(得分: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);
?>

希望有所帮助

答案 1 :(得分:0)

请继续尝试!您可能会遇到超时错误。如果这样做,请尝试配置最大超时设置。 http://php.net/manual/en/function.set-time-limit.php

答案 2 :(得分: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);

答案 3 :(得分: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