php 可用内存大小,php - 致命错误:允许的内存大小为134217728字节耗尽

我正在创建一个将csv文件导入数据库的函数。但是发生了一个错误,我想知道如何解决这个问题。php - 致命错误:允许的内存大小为134217728字节耗尽

Error: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)

我的功能:

importFile("ingram", "ingram_fees.txt", "ingram_fees");

function importFile($company, $fileName, $tableName) {

$filePath = "./ftp_imports/".$company."/".$fileName;

$file = fopen($filePath, "r");

$firstRowNames = fgetcsv($file);

$columnNames = array();

$rows = count($firstRowNames);

$i = 0;

while ($i < $rows) {

array_push($columnNames, toCamelCase($firstRowNames[$i]));

}

if ($result = $mysqli->query("SHOW TABLES LIKE '".$tableName."'")) {

if($result->num_rows !== 1) {

$queryCreateTable = "CREAT TABLE $tableName (";

$num = count($columnNames);

$i = 0;

while ($i < $num) {

switch (gettype($columnNames[$i])) {

case 'string':

$queryCreateTable .= $columnNames[$i] . " VARCHAR(25)";

break;

case 'integer':

$queryCreateTable .= $columnNames[$i] . " DECIMAL(10,2)";

break;

case 'double':

$queryCreateTable .= $columnNames[$i] . " DECIMAL(10,2)";

break;

case 'NULL':

$queryCreateTable .= $columnNames[$i] . " VARCHAR(25)";

break;

default:

break;

}

if ($i !== ($num - 1)) {

$queryCreateTable .= ",";

} else {

$queryCreateTable .= ");";

}

}

}

} else {//table already exists

$queryDelAll = "TRUNCATE TABLE $tableName";

$db->query($queryDelAll);

$queryImport = <<

LOAD DATA LOCAL INFILE '$filePath'

INTO TABLE $tableName

FIELDS TERMINTED BY ','

LINES TERMINATED BY '\n'

INGORE 1 LINES

($columnNames)

eof;

$db->query($queryImport);

}

}

这给了,因为它的内存使用量的误差的功能。

function toCamelCase($string, $capitalizeFirstCharacter = false) {

$str = str_replace(' ', '', ucwords(str_replace('-', ' ', $string)));

if (!$capitalizeFirstCharacter) {

$str[0] = strtolower($str[0]);

}

return $str;

}

因为$columnNames阵列只有8个值长,我不知道为什么内存使用率是很高。

有人可以帮我吗?

感谢, 每

2017-06-13

Perra

+0

..: $i = 0; while ($i < $rows) { array_push($columnNames, toCamelCase($firstRowNames[$i])); }

更好“);(例如'256M' for 256 Mb) –

+0

您需要更新php ini memory_limit –

+3

'$ i'永远不会在循环中增加,因此'$ columnNames'无限增长。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值