无法在php中分析大文件

无法在php中分析大文件,php,xml,xml-parsing,server-side,Php,Xml,Xml Parsing,Server Side,我正在从事一个项目,在不同的目录中有大约300000个xml文件和大约800GB的图像文件 我用PHP编写了一个解析器,它扫描每个xml文件并读取一些标记,如标题、故事、作者、图像路径,然后写入一个新的xml文件,并将相应的图像文件从不同的目录复制到一个新的目录 当我运行脚本编写新的xml文件并复制图像文件时,由于文件太大,无法在10-12小时内完成,有时服务器没有响应。我有i5处理器和12gbram的服务器配置 Php脚本的执行时间和内存大小代码如下: ini_set('max_executi

我正在从事一个项目,在不同的目录中有大约300000个xml文件和大约800GB的图像文件

我用PHP编写了一个解析器,它扫描每个xml文件并读取一些标记,如标题、故事、作者、图像路径,然后写入一个新的xml文件,并将相应的图像文件从不同的目录复制到一个新的目录

当我运行脚本编写新的xml文件并复制图像文件时,由于文件太大,无法在10-12小时内完成,有时服务器没有响应。我有i5处理器和12gbram的服务器配置

Php脚本的执行时间和内存大小代码如下:

ini_set('max_execution_time', 60000); 
ini_set('memory_limit', '-1');

那么有人能告诉我,我做这件事的方向是否正确吗?或者我需要将技术从php更改为其他技术吗?

在php中处理这么多文件的成本太高。您可以通过在代码中设置此标志将最大执行时间设置为所需的时间,也可以直接在php.ini文件
ini_set('max_execution_time','300')中更改它
对于无限执行时间,您可以使用
ini_集('max_execution_time','0')。另一个在内存限制中。大多数情况下,为PHP分配的内存限制是256MB。通过更改php.ini中
memory\u limit=256M
的值来更改所需的大小。注意:将大文件拆分为较小的包并进行处理。是否需要移动图像文件?你能改变你在这方面的策略吗?例如,新的xml文件可以简单地(相对地)引用图像文件的实际位置。是的,如果有必要,您可以尝试让php创建一个shell脚本,稍后将文件移动到php之外。或者,您可能希望将应用程序的这一部分转换为控制台php脚本(与浏览器相反),该脚本没有最大执行时间限制。