Hello,
"Jeff Schwartz" <[EMAIL PROTECTED]> wrote:
>
> I have a large amount of data (1,948,280 bytes) that I tried to write out
to a file using
>
> if ($fp = fopen($file,"w")):
>
> fwrite($fp,$contents,strlen($contents));
>
> fclose($fp);
>
> endif;
I'm not sure if I understand this correctly but don't you think you don't
need strlen($contents) up there? Also, try fopen($file,"wb").
And here,
> and got "Fatal error: Allowed memory size of 8388608 bytes exhausted
(tried to allocate 1948281 bytes)" on the 2nd line. So, I tried to write out
smaller portions with:
>
> if ($fp = fopen($file,"w")):
>
> $size = 4096;
>
> while (strlen($contents)){
>
> $temp = substr($contents,0,$size);
>
> fwrite($fp,$temp,$size);
>
> $contents = substr($contents,$size+1);
>
> }
>
> fclose($fp);
>
> endif;
...doing "$contents = substr($contents,$size+1);" would actually cause you
to lose some data.
Try this instead:
if ($fp = fopen($file,"wb")): // add "b"
$size = 4096;
while (strlen($contents)){
$temp = substr($contents,0,$size);
fwrite($fp,$temp); // remove $size
$contents = substr($contents,$size); // remove "+1"
}
fclose($fp);
endif;
I didn't test so I'm not sure if it'll work--just some ideas...
HTH,
- E
...[snip]...
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php