在一个文件夹中,我有 34,000 个配置文件。每个文件都包含一个具有唯一配置规范的对象。以下是文件内容的示例:
$obj = new obj();
$obj->name = "name":
$obj->location "nyc";
...
...
etc
每个文件长约 100 到 200 行,大小约为 17k。
要将这些输入数据库,我有以下功能:
function retrieve_files(){
$objs = array();
$path = 'filefolder';
//retrieve a list of files as an array of objects
$files = get_files('/\.inc$/', $path, 'filename', 0);
foreach ($files as $file) {
include_once $path.'/'.$file->filename;
$objs[$obj->name] = $obj;
}
return $objs;
}
一旦对象数组被返回,它就会在另一个函数中循环,序列化,并且每个都保存到数据库中。
目前,我的服务器是 Intel 双核 3.06 Ghz 处理器,具有 8 Gigs 的 RAM。我正在通过 Ubuntu 12.04 中的命令行运行脚本。
随着脚本的处理,CPU 达到 100% 的最大值并且内存不断攀升,直到所有 8 个演出都达到最大值。然后脚本崩溃。
我怎样才能使这个脚本或整个过程更有效率?最好我宁愿留在这个功能的范围内。我也希望一次性完成。有没有办法在创建数组和迭代循环时使用更少的资源或释放资源来重构它?