Php中断或拆分大型ICS文件

时间:2016-08-29 15:57:08

标签: php icalendar

我有一个大小为2GB的ICS文件,我想解析该文件中的ics数据,但是php无法读取这么大的文件,而且我得到了致命的错误#34; Out of Memory"即使我已经设置了" ini_set(' memory_limit',' -1')"。 所以我想以某种方式将大ICS文件分解或拆分为小文件,或者有没有办法从这样大的ICS文件中读取数据。

我有一些小文件,一切正常,我可以从其他文件中提取数据,但2gb大ICS文件对我来说更重要的是提取/解析。

提前致谢

1 个答案:

答案 0 :(得分:0)

处理Out of memory异常的常用方法是在php.ini文件中为php分配更多ram,但因为你有一个2Gb文件不是有效选项,除非你的系统有很多内存。基本上你是在试图读错文件。不是读取整个文件并将其保存到一个相当于文件大小的ram变量,而是根据您正在处理的文件格式逐行解析它们。以下是您可以使用的基本示例

<?php
$handle = fopen("fileName", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        // process line here
    }

    fclose($handle);
} else {
    // handle file read error
}
?>

希望这会对你有所帮助。