You are here: Re: [PHP] Reading large files via PHP? « PHP « IT news, forums, messages
Re: [PHP] Reading large files via PHP?

Posted by Philip Hallstrom on 01/11/06 21:42

> I'm reading in a 66MB file into php so I can parse it and load it into a
> database. However, it is taking a long time for php to read the file.
> So long that the script times out. I know about the
> ini_set("max_execution_time", 120) or whatever length I want to set the
> time out for the script, but my question is as follows.
>
> Is it possible to read in a file and at the same time echo out a status
> of how far along the file has been read?
>
> The code I have right now is below. Just wondering if what I'm trying
> to do is possible and how to do it.
>
> // set script timeout
> ini_set("max_execution_time", 120);
>
> // import file name
> $log_file_name = "access_log.1";
> echo "Reading access log!<br/>";
> if (!$ac_arr = file("./$log_file_name")) {
> echo "Couldn't load access log!";
> die;
> }
>
> Thanks!

Even if you get around the execution time the above code is going to use
up 66megs of memory to store that file in $ac_arr.

You'd be much better off doing something like:

$fd = fopen("./$log_file_name", "r");

while ( !feof($fd) ) {
$buf = fread($fd, 32768);
// process buffer here
}
fclose($fd);

That will let you do your progress thing as well as not eat up so much
memory. Play around with values of 32768 to see if smaller or larger
makes any different on your system.

Good luck!

 

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

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