Link to home
Start Free TrialLog in
Avatar of duncanb7
duncanb7

asked on

Out of memory at file_put_contents() NOT related memory_limt, execution time, input_time in php

Fatal error on file_put_contents() NOT  related memory_limt, execution time, input_time in phpQuestion: Dear Experts,

I get one php script, csvextract.php,  as attached in code area, and I found the error message
"Fatal Error: Out of memory(allocated 3123000)(tried to allocate 71 bytes) in /home/.../csvextract.php line 17"
at the line 17 is exactly at file_put contents() function location.
And I already check my php.ini file and .htaccess file, those are already setting correct memory_limit=128M,
max_execution_time=0, max_input_time=-1, so I believe the error message is NOT related to
memory_limit, max_input_time, max_exexcution_time.

SO what other factors or setting in php.ini will affect the file_put_contents() function ? Is the fatal error
related to magic_quotes_sysbase() and  magic_quotes_runtime() ? I got confused about how to use
magic_quotes_sysbase!

When I cut  down the file of "data.csv" file size by half or number of row in the file by half,
it is passed and no any error message.So I suspect $csv variable  to store the array from file() can NOT
be too much size. Do you think so.? Is there any setting in php.ini related to parsing variable size like $csv as follows

Be reminded my fatal error message is out of memory(allocated 3123000)(tried) and NOT  "Allowed memory size 100k exhausted"  
If memory_limit is not set correctly, it will report  error like " Allowed memory size 100k exhausted" for example only

Please advise

Duncan


<?php
ini_set('max_execution_time', 0);
ini_set('max_input_time', -1);
ini_set('memory_limit', '128M');
ini_set('post_max_size', "128M");
ini_set('upload_max_filesize', "128M");
$csv=file("data.csv");
$e=count($csv);

$line=array();
for ($a=$e-1; $a > 0; --$a) {
$line= explode(",",$csv[$a]);
$line[4]=$line[4]+100;
$line[36]="a";
$line[37]="aa";
$line[38]="bb";
$line[39]="cc";
$line[40]="\n";
$csv= implode(",",$line);

}
file_put_contents("data.csv",$csv);
?>

Open in new window

SOLUTION
Avatar of lexlythius
lexlythius
Flag of Argentina image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of duncanb7
duncanb7

ASKER

I am sorry it is typing mistake it is already $csv{$a].
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
$new_csv[$a] = implode(',', $line);

Try the new variavel of $new_csv
nad file_put_contents("data.csv", $new_csv);

But all is same to get the same error message
I can't go into the line http://ar.php.net.manual/en/function.forgets.php , Why it is empty?
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks for your reply,

the issue is solved finally