我正在尝试运行一个读取CSV的复杂导入任务。此导入工作正常,除非服务器耗尽了可用内存来完成任务。我正在尝试将文件分成1000行的块,以便服务器可以逐个处理这些“一口大小”的部分。但是,我的CSplit不会拆分这些文件。我的语法是正确的吗?
我已经检查了目录是否正确,命令的路径是否正确,以及文件是否在那里,但不是很幸运。
提前谢谢。
function processSplit() {
chdir('Files');
$dir = '*';
foreach (glob($dir) as $file) {
system(CSPLIT_PATH . " -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");
}
}发布于 2012-08-29 23:22:09
命令行不正确。您必须:
system(CSPLIT_PATH . " -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");
应该是:
system(CSPLIT_PATH . " $file -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");
此外,我将更改-f ' " . $file . " ',因为您将在输出文件的前面和后面创建一个空间。
发布于 2012-08-30 21:24:36
解决了。Grzegorz感谢您的帮助,但问题出在正在传递的文件的结构以及使用此函数时文件不能包含任何空格的事实。使用preg replace将所有空格更改为_解决了这个问题。
https://stackoverflow.com/questions/12180859
复制相似问题