【发布时间】:2015-09-27 22:58:38
【问题描述】:
在我的 wamp 服务器中,我有一个每秒更新 csv 文件的脚本。 我想从 csv 文件中删除行,我有这段代码(来自这里:How To Delete The Top 100 Rows From a CSV File With PHP):
$input = explode("\n", file_get_contents("file.csv"));
foreach ($input as $line) {
// process all lines.
}
// This function removes first 100 elements.
// More info:
// http://php.net/manual/en/function.array-slice.php
$output = array_slice($input, 100);
file_put_contents("out.csv", implode("\n", $output));
当我尝试运行上面的代码时发生了问题,我得到:
“未能打开流权限被拒绝”
问题是因为文件一直在更新。 我怎么知道? 我做了一个 csv 的副本(这个文件的内容根本没有更新),它是成功的。
为什么我需要这个?
因为文件正在增长,我必须从他那里删除行..如果我不这样做,我会得到:“PHP 致命错误:允许的 ******** 字节的内存大小已用尽(试图分配71 个字节)在 /var/www/*******.php 第 54 行,”即使我写了 ini_set("memory_limit", "-1");
我提醒你 - 这是 wamp 服务器!
有什么想法吗?
谢谢!
【问题讨论】:
-
你为什么要每秒写入一个 csv?
-
一些重要数据。因为文件正在增长,我必须从他那里删除行..如果我不这样做,我会得到:“PHP 致命错误:允许的 ******** 字节的内存大小已用尽(尝试分配 71 个字节)在 /var/www/*******.php 第 578 行,”即使我写了 ini_set("memory_limit", "-1");
-
你不能编辑更新文件的脚本并删除那里多余的行吗?
标签: php wamp fgetcsv fputcsv php-5.6