我试图将大量单词作为单独的条目输入数据库。
该文件是一个逗号分隔的单词的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限制无济于事。
编辑:标记为重复的问题不会出现内存错误。或任何错误。
答案 0 :(得分:1)
这是一个快速的python脚本,如果你想尝试一下,它通常比PHP处理更多的数据。
LazySeq
答案 1 :(得分:0)
您是否愿意仅为导入增加PHP内存限制?
您可以尝试将其放在php文件的顶部。
ini_set('memory_limit', '128M');
或者您可以在php.ini中全局更改它。 (\ XAMPP \ PHP \ php.ini中)
memory_limit = 128M
更改全局内存限制后,您可能需要重新启动apache。