You are here: RETRACTION - Large array stored in session variable causes server to choke « PHP Programming Language « IT news, forums, messages
RETRACTION - Large array stored in session variable causes server to choke

Posted by Jasen Betts on 02/12/06 12:02

On 2006-02-12, Jasen Betts <jasen@free.net.nz> wrote:
> On 2006-02-11, MrBiggles <mrbiggles909@yahoo.com> wrote:
>
>> I read in a csv file with 60000 lines (20 fields per record), and store
>> the data to a local array. The file is read in and stored just fine and
>> pretty quick.
>> Now, if I try to assign that array to a session variable it chokes.
>> e.g. create array and load each element with a row from the file (btw,
>> each row is an array as well, using fgetcsv()). When local array is
>> loaded, I assign to session var as so:
>> $_SESSION['mydata'] = localArray;
>
> Here I'm limited to something like 3.2K much more than that and the session
> data is lost.

sorry, no that was a mozilla bug not displaying lines with that many
non-space characters... I've tested sessions upto 2M here - that's about the
limit for this old hardware...


hmm...

I hear (and see in my config file) that PHP gets (by default) 8M of ram
to play with.

60K x 20 is 1200K fields
there's only room for an about 8 bytes per field, four of which are
probably going to be a pointer of some sort there's probably another four
needed for memory allocation control, or a reference counte etc... looks
like you're doomed before you even start.

I did some testing:

$a=array();
for($c=200;$c<60000;$c+=200)
{
for($b=$c-200;$b<$c;$b++)
{
$a[$b]=array('1','2','3','4','5','6','7','8','9','0',
'a','b','c','d','e','f','g','h','i','j');
print('.');
}
print '<br>' .$c; flush();
};


I get about 5500 rows by 20 elements by 1 character each before I exceed
that limit

if you bump the limit up to say 400M you might have some success
(dependant on record sizes).

that means your server wants around 40G of ram to be able to handle 100
simultaneous requessts... (is 100 a reasonable figure??)

ISTM it might be time to re-evaluate the task and either do without the huge
array, or store and process it using some other language (like a databaee
using SQL or a custom app using C, or a combination oof the two)

Bye.
Jasen

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация