我正在尝试运行读取CSV的复杂导入任务。此导入工作正常,但服务器耗尽可用内存以完成任务。我试图将文件分成1000行的块,以允许服务器然后逐个处理这些“咬大小”部分。但是我的CSplit不会拆分文件。我的语法是否合适?
我检查过目录是否正确,并且该命令的路径是否正确,文件是否存在但没有运气。
提前致谢。
function processSplit() {
chdir('Files');
$dir = '*';
foreach (glob($dir) as $file) {
system(CSPLIT_PATH . " -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");
}
}
答案 0 :(得分:1)
命令行不正确。 你有:
system(CSPLIT_PATH . " -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");
应该是:
system(CSPLIT_PATH . " $file -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");
此外,我会更改-f ' " . $file . " '
,因为您正在输出文件的前面和后面创建一个空格。
答案 1 :(得分:0)
解决。 Grzegorz感谢您的帮助,但问题在于传递文件的结构以及使用此函数时文件不能包含任何空格的事实。使用preg replace
将所有空格更改为_
解决了这个问题。