试图在PHP / Wordpress中解析大文件到数组。继续得到内存错误

时间:2016-02-20 15:50:26

标签: php wordpress memory

我试图将大量单词作为单独的条目输入数据库。

该文件是一个逗号分隔的单词的17MB文本文件。

PHP是:

$file = file_get_contents(plugins_url( '/cipher.txt' , __FILE__ ));
    $words = explode(',', $file);

    foreach($words as $word){
        $wpdb->query("INSERT IGNORE INTO cipher_words (word) VALUES (\"" . $word . "\")");
    }

我一直遇到类似于:

的内存错误
[20-Feb-2016 15:26:26 UTC] PHP Fatal error:  Out of memory (allocated 247726080) (tried to allocate 16777216 bytes) in C:\xampp\htdocs\testsite\wp-content\plugins\joshscipher\cipher.php on line 26

[20-Feb-2016 15:26:29 UTC] PHP Fatal error:  Out of memory (allocated 139460608) (tried to allocate 8388608 bytes) in C:\xampp\htdocs\testsite\wp-content\plugins\joshscipher\cipher.php on line 26

[20-Feb-2016 15:26:29 UTC] PHP Fatal error:  Out of memory (allocated 247726080) (tried to allocate 16777216 bytes) in C:\xampp\htdocs\testsite\wp-content\plugins\joshscipher\cipher.php on line 26

有没有更好的方法来处理这么大的阵列?有什么东西可能是异步的吗?

CSV会更好用,还是会达到相同的限制?

我尝试过增加PHP限制和WP限制无济于事。

编辑:标记为重复的问题不会出现内存错误。或任何错误。

2 个答案:

答案 0 :(得分:1)

这是一个快速的python脚本,如果你想尝试一下,它通常比PHP处理更多的数据。

LazySeq

答案 1 :(得分:0)

您是否愿意仅为导入增加PHP内存限制?

您可以尝试将其放在php文件的顶部。

ini_set('memory_limit', '128M');

或者您可以在php.ini中全局更改它。 (\ XAMPP \ PHP \ php.ini中)

memory_limit = 128M

更改全局内存限制后,您可能需要重新启动apache。