Connecting Tech Pros Worldwide Help | Site Map

Large Array Problem

Mark
Guest
 
Posts: n/a
#1: Jul 17 '05
I am using PHP 4.3.5. I am having a problem in which my script is
crashing when it is using a large array. I have simplified the
problem down to the following example:

<?
set_time_limit(0);
echo("<html><body>test<br>");
$array1 = array();
$value1 = 1;
for ($index = 0; $index < 160000; $index++)
{
$array1[] = $value1;
}
for($index = 0; $index < 100; $index++)
{
echo("index = $index, value = $array1[$index]<br>");
}
echo("done<br>");
echo("</body></html>");
exit(0);
?>

If I run the above code it crashes with nothing displayed to the
screen. If I change the loop to go to 80000 instead of 160000 then it
works fine.

Also, I can keep the loop setting at 160000 but change the line:
$array1[] = $value1;
to instead read
$array1[] = 1;
and then it also works fine.

Why does it fail when there are 160000 elements in the array that are
set with a variable?

Thanks,
Mark
michel
Guest
 
Posts: n/a
#2: Jul 17 '05

re: Large Array Problem


Try:
print("index = $index, value = $array1[$index]<br>");flush();

and see where it goes wrong exactly. it will give you the output directly.

Mich

"Mark" <marktmp87342@yahoo.com> wrote in message
news:5f18923b.0406092155.5efa561f@posting.google.c om...[color=blue]
> I am using PHP 4.3.5. I am having a problem in which my script is
> crashing when it is using a large array. I have simplified the
> problem down to the following example:
>
> <?
> set_time_limit(0);
> echo("<html><body>test<br>");
> $array1 = array();
> $value1 = 1;
> for ($index = 0; $index < 160000; $index++)
> {
> $array1[] = $value1;
> }
> for($index = 0; $index < 100; $index++)
> {
> echo("index = $index, value = $array1[$index]<br>");
> }
> echo("done<br>");
> echo("</body></html>");
> exit(0);
> ?>
>
> If I run the above code it crashes with nothing displayed to the
> screen. If I change the loop to go to 80000 instead of 160000 then it
> works fine.
>
> Also, I can keep the loop setting at 160000 but change the line:
> $array1[] = $value1;
> to instead read
> $array1[] = 1;
> and then it also works fine.
>
> Why does it fail when there are 160000 elements in the array that are
> set with a variable?
>
> Thanks,
> Mark[/color]


Chung Leong
Guest
 
Posts: n/a
#3: Jul 17 '05

re: Large Array Problem


"Mark" <marktmp87342@yahoo.com> wrote in message
news:5f18923b.0406092155.5efa561f@posting.google.c om...[color=blue]
> I am using PHP 4.3.5. I am having a problem in which my script is
> crashing when it is using a large array. I have simplified the
> problem down to the following example:
>
> <?
> set_time_limit(0);
> echo("<html><body>test<br>");
> $array1 = array();
> $value1 = 1;
> for ($index = 0; $index < 160000; $index++)
> {
> $array1[] = $value1;
> }
> for($index = 0; $index < 100; $index++)
> {
> echo("index = $index, value = $array1[$index]<br>");
> }
> echo("done<br>");
> echo("</body></html>");
> exit(0);
> ?>
>
> If I run the above code it crashes with nothing displayed to the
> screen. If I change the loop to go to 80000 instead of 160000 then it
> works fine.
>
> Also, I can keep the loop setting at 160000 but change the line:
> $array1[] = $value1;
> to instead read
> $array1[] = 1;
> and then it also works fine.
>
> Why does it fail when there are 160000 elements in the array that are
> set with a variable?[/color]

What do you mean by "crashing?" Did Apache (or whatever) blow up or did you
just get a blank page? On computers with small amount of memory, PHP can
indeed crash the server.


Closed Thread