Ask a Question related to PHP Development, Design and Development.
-
RG #1
File() too slow
I am trying to process a CSV file but am having trouble with my hosts
maximum execution time of 30 seconds.
This is how the script works at the moment.
User uploads their CSV file
The script goes through the file() and writes smaller chunk files.
The script then goes through processing the smaller files, populating the
database, deleting the processed file and refreshing itself, thus starting
again.
This system works for files up to 15000 rows, but I need to be able to
process larger files.
The bottleneck is with the initial splitting, since I use the file()
function to read the entire uploaded file.
Does anyone know a quicker way to split a file into smaller chunks.
TIA
RG
RG Guest
-
Slow processing of XML file
Evening, I have a script which is called to look through 10,000 part numbers in an xml file. Script below... function init(){ trace('init');... -
CS: Excruciatingly slow Save As to eps file
I'm in the process of saving an AI file to EPS. I Save As, select folder, select EPS, the click Save. I should be presented with the EPS options. It... -
Slow eps file lists
InDesign CS is extremely slow on showing the list of files in the file-dialog when placing a file by accessing folders with a large number of eps... -
fLASH FILE SLOW
I have used some flash files in my .dir projector but the flash swf files animation becomes slow while playing in director Is there a way to play... -
Slow File Open
We have a WinNT 4, sp6, server where all our files are hosted. We have several Win98, Win2k Pro, and WinXP Pro computers that access the files on... -
Timo Henke #2
Re: File() too slow
> This system works for files up to 15000 rows, but I need to be able to
file() is by far NOT a bottleneck at your present Problem as it is not> process larger files.
> The bottleneck is with the initial splitting, since I use the file()
> function to read the entire uploaded file.
any slower than reading the using fread() and splitting it up afterwards.
The Bottleneck is (seems like) your Database compare / writing stuff.
It sounds like you read in eg. 15000 lines, break them down into chunks
and then proceed all the chunks line by line, checking the database,
comparing
the database data with your cvs and then deciding on what to do (delete,
insert
update ...)
At 15000 Entries THIS will make your Script timeout, not the file()
command.
If you do not believe it, try to manually read and explode it ...
regards
timo
Timo Henke Guest
-
RG #3
Re: File() too slow
"Timo Henke" <webmaster@fli7e.de> wrote in message
news:bl0qhl$r0u$06$1@news.t-online.com...>> > This system works for files up to 15000 rows, but I need to be able to
> > process larger files.
> > The bottleneck is with the initial splitting, since I use the file()
> > function to read the entire uploaded file.
> file() is by far NOT a bottleneck at your present Problem as it is not
> any slower than reading the using fread() and splitting it up afterwards.
>
> The Bottleneck is (seems like) your Database compare / writing stuff.
>
> It sounds like you read in eg. 15000 lines, break them down into chunks
> and then proceed all the chunks line by line, checking the database,
> comparing
> the database data with your cvs and then deciding on what to do (delete,
> insert
> update ...)
>
> At 15000 Entries THIS will make your Script timeout, not the file()
> command.
>
> If you do not believe it, try to manually read and explode it ...
>
> regards
>
> timo
>
The initial splitting of the file is the bottleneck, I do not compare
anything in this procedure.
There is not a problem with the database comparing etc, it seems to take
about 2 seconds to do around 3000 mysql queries. This is fine.
I just need a quick way to initially split the large file into smaller
files.
TIA
RG
RG Guest
-
Timo Henke #4
Re: File() too slow
> The initial splitting of the file is the bottleneck, I do not compare
lets talk about filesizes. I JUST tried it. Reading (and splitting) a 19MB> anything in this procedure.
> There is not a problem with the database comparing etc, it seems to take
> about 2 seconds to do around 3000 mysql queries. This is fine.
File
with 322000 Lines took 0.39843 seconds on My Machine:
<?php
list($usec, $sec) = explode(" ",microtime());
$start =((float)$usec + (float)$sec);
$indata = file("cvs");
list($usec, $sec) = explode(" ",microtime());
$end =((float)$usec + (float)$sec);
printf("%.5f",$end-$start);
?>
This IS NOT a bottleneck i believe?
Timo
Timo Henke Guest
-
RG #5
Re: File() too slow
"Timo Henke" <webmaster@fli7e.de> wrote in message
news:bl0rja$ul9$05$1@news.t-online.com...Lightning fast.>> > The initial splitting of the file is the bottleneck, I do not compare
> > anything in this procedure.
> > There is not a problem with the database comparing etc, it seems to take
> > about 2 seconds to do around 3000 mysql queries. This is fine.
> lets talk about filesizes. I JUST tried it. Reading (and splitting) a 19MB
> File
> with 322000 Lines took 0.39843 seconds on My Machine:
>
>
> <?php
>
> list($usec, $sec) = explode(" ",microtime());
> $start =((float)$usec + (float)$sec);
>
> $indata = file("cvs");
>
> list($usec, $sec) = explode(" ",microtime());
> $end =((float)$usec + (float)$sec);
>
> printf("%.5f",$end-$start);
>
> ?>
>
> This IS NOT a bottleneck i believe?
>
> Timo
>
I think I've found the problem: upload_max_filesize is 2M
It is dieing, very poorly.
You must have changed your php.ini?
Thanks for the pointers
RG
RG Guest
-
Timo Henke #6
Re: File() too slow
> Lightning fast.
yeehaa :-)
jupp .. changed to 32M, because i often need to transfer bigger> I think I've found the problem: upload_max_filesize is 2M
> It is dieing, very poorly.
> You must have changed your php.ini?
data in our intranet.
hope it would work out well for you> Thanks for the pointers
regards
timo
Timo Henke Guest
-
RG #7
Re: File() too slow
"Timo Henke" <webmaster@fli7e.de> wrote in message
news:bl0so7$vl4$05$1@news.t-online.com...I don't suppose there's a workaround for this?>> > Lightning fast.
> yeehaa :-)
>>> > I think I've found the problem: upload_max_filesize is 2M
> > It is dieing, very poorly.
> > You must have changed your php.ini?
> jupp .. changed to 32M, because i often need to transfer bigger
> data in our intranet.
>>> > Thanks for the pointers
> hope it would work out well for you
>
> regards
>
> timo
>
RG
RG Guest
-
RG #8
Re: File() too slow
"Timo Henke" <webmaster@fli7e.de> wrote in message
news:bl0so7$vl4$05$1@news.t-online.com...I don't suppose there's a workaround for this?>> > Lightning fast.
> yeehaa :-)
>>> > I think I've found the problem: upload_max_filesize is 2M
> > It is dieing, very poorly.
> > You must have changed your php.ini?
> jupp .. changed to 32M, because i often need to transfer bigger
> data in our intranet.
>>> > Thanks for the pointers
> hope it would work out well for you
>
> regards
>
> timo
>
RG
RG Guest
-
Eto Demerzel #9
Re: File() too slow
In article <3f73f748$0$65579$65c69314@mercury.nildram.net>, RG's output
was...IIRC - you can do something along the lines of:>> >> > > I think I've found the problem: upload_max_filesize is 2M
> > > It is dieing, very poorly.
> > > You must have changed your php.ini?
> > jupp .. changed to 32M, because i often need to transfer bigger
> > data in our intranet.
> I don't suppose there's a workaround for this?
> RG
>
ini_set("upload_max_filesize", "64M");
- I understand this will only change the max size for operations in that
particular script - not for the whole server/virtual server.
Eto Demerzel Guest
-
RG #10
Re: File() too slow
"Eto Demerzel" <eto.demerzel@fijivillage.com> wrote in message
news:MPG.19de0adf1903d3b498971b@news-text.blueyonder.co.uk...> In article <3f73f748$0$65579$65c69314@mercury.nildram.net>, RG's output
> was...> IIRC - you can do something along the lines of:> >> > > > I think I've found the problem: upload_max_filesize is 2M
> > > > It is dieing, very poorly.
> > > > You must have changed your php.ini?
> > >
> > > jupp .. changed to 32M, because i often need to transfer bigger
> > > data in our intranet.
> > I don't suppose there's a workaround for this?
> > RG
> >
>
> ini_set("upload_max_filesize", "64M");
>
>
> - I understand this will only change the max size for operations in that
> particular script - not for the whole server/virtual server.
Tried that out but it seems that the file is uploaded before the script is
executed which means, the file is dumped before the function is called.
I'm sure my host wont want to change these settings, Rackshack (cheap).
Looks like I'm gonna have to get some more expensive hosting.
Any suggestions: PHP with GD, Multiple MySQL databases, password protect
directories, 20gb month
Thanks
RG
RG Guest
-
RG #11
Re: File() too slow
"Ian.H" <ian@WINDOZEdigiserv.net> wrote in message
news:pan.2003.09.26.09.30.10.190519@hybris.digiser v.net...> On Fri, 26 Sep 2003 10:22:39 +0100, RG wrote:
>>> >> jupp .. changed to 32M, because i often need to transfer bigger data in
> >> our intranet.
> >>
>
> [ snip ]
>
>>> > I don't suppose there's a workaround for this? RG
>
> RG,
>
> You can put a hidden field in a form:
>
>
> <input type="hidden" name="MAX_UPLOAD_SIZE" value="33554432" />
>
>
> This should "do the biz" before the form is whizzed off to the server for
> processing =)
>
>
> HTH.
>
>
>
> Regards,
>
> Ian
Tried that and it didn't work.
Thanks anyway.
Anyone else?
RG
>
RG Guest
-
RG #12
Re: File() too slow
"Ian.H" <ian@WINDOZEdigiserv.net> wrote in message
news:pan.2003.09.26.09.32.36.386900@hybris.digiser v.net...> On Fri, 26 Sep 2003 10:29:15 +0000, Ian.H wrote:
>>> > <input type="hidden" name="MAX_UPLOAD_SIZE" value="33554432" />
>
> Oops.. that should be:
>
>
> <input type="hidden" name="MAX_FILE_SIZE" value="33554432" />
>
>
>
> Regards,
>
Tried the later too.
Still didn't work
Thanks though, I'm stuck here.
RG
>
RG Guest
-
Timo Henke #13
Re: File() too slow
> Tried that and it didn't work.
Just another suggestion : try to upload the file in GZ Format (if> Thanks anyway.
> Anyone else?
> RG
possible).
This would cut down transfer and filesize to a minimum and could easily
with NO TIME unpacked by PHPs internal gz functions.
My previously mentioned 19MB testfile got shrinked down to 351.164 bytes.
You get the point?
timo
Timo Henke Guest
-
RG #14
Re: File() too slow
"Timo Henke" <webmaster@fli7e.de> wrote in message
news:bl13ds$iv1$01$1@news.t-online.com...>> > Tried that and it didn't work.
> > Thanks anyway.
> > Anyone else?
> > RG
> Just another suggestion : try to upload the file in GZ Format (if
> possible).
>
> This would cut down transfer and filesize to a minimum and could easily
> with NO TIME unpacked by PHPs internal gz functions.
>
> My previously mentioned 19MB testfile got shrinked down to 351.164 bytes.
>
> You get the point?
>
> timo
>
Think I'm stuck, I can't trust clients with no knowledge to do this
Thanks though
RG
RG Guest
-
Shawn Wilson #15
Re: File() too slow
RG wrote:
You could probably write a tiny program in VB or something else that would split>
> "Timo Henke" <webmaster@fli7e.de> wrote in message
> news:bl13ds$iv1$01$1@news.t-online.com...>> >> > > Tried that and it didn't work.
> > > Thanks anyway.
> > > Anyone else?
> > > RG
> > Just another suggestion : try to upload the file in GZ Format (if
> > possible).
> >
> > This would cut down transfer and filesize to a minimum and could easily
> > with NO TIME unpacked by PHPs internal gz functions.
> >
> > My previously mentioned 19MB testfile got shrinked down to 351.164 bytes.
> >
> > You get the point?
> >
> > timo
> >
> Think I'm stuck, I can't trust clients with no knowledge to do this
> Thanks though
> RG
a CSV file (file.csv) into 2MB chunks (file1.csv, file2.csv, file3.csv ...). It
would almost definitely be simple enough for your clients to use.
Shawn
--
Shawn Wilson
[email]shawn@glassgiant.com[/email]
[url]http://www.glassgiant.com[/url]
Shawn Wilson Guest
-
RG #16
Re: File() too slow
"Shawn Wilson" <shawn@glassgiant.com> wrote in message
news:3F743043.F40BDB6@glassgiant.com...easily> RG wrote:> >
> > "Timo Henke" <webmaster@fli7e.de> wrote in message
> > news:bl13ds$iv1$01$1@news.t-online.com...> > > > Tried that and it didn't work.
> > > > Thanks anyway.
> > > > Anyone else?
> > > > RG
> > >
> > > Just another suggestion : try to upload the file in GZ Format (if
> > > possible).
> > >
> > > This would cut down transfer and filesize to a minimum and couldbytes.> > > with NO TIME unpacked by PHPs internal gz functions.
> > >
> > > My previously mentioned 19MB testfile got shrinked down to 351.164split>> >> > >
> > > You get the point?
> > >
> > > timo
> > >
> > Think I'm stuck, I can't trust clients with no knowledge to do this
> > Thanks though
> > RG
> You could probably write a tiny program in VB or something else that would....). It> a CSV file (file.csv) into 2MB chunks (file1.csv, file2.csv, file3.csv> would almost definitely be simple enough for your clients to use.
>
> Shawn
Thats not a bad idea. Would this be possible with Javascript? or maybe VB
Script?
Would ideally want the program to somehow interface with the import scripts,
so ideally, browser based.
Any ideas?
RG
RG Guest
-
Shawn Wilson #17
Re: File() too slow
RG wrote:
JS, no for sure. VBScript - I doubt it, but I don't know VBScript. I doubt> easily> > > > Just another suggestion : try to upload the file in GZ Format (if
> > > > possible).
> > > >
> > > > This would cut down transfer and filesize to a minimum and could> bytes.> > > > with NO TIME unpacked by PHPs internal gz functions.
> > > >
> > > > My previously mentioned 19MB testfile got shrinked down to 351.164> split> >> > > >
> > > > You get the point?
> > > >
> > > > timo
> > > >
> > >
> > > Think I'm stuck, I can't trust clients with no knowledge to do this
> > > Thanks though
> > > RG
> > You could probably write a tiny program in VB or something else that would> ...). It> > a CSV file (file.csv) into 2MB chunks (file1.csv, file2.csv, file3.csv>> > would almost definitely be simple enough for your clients to use.
> >
> > Shawn
> Thats not a bad idea. Would this be possible with Javascript? or maybe VB
> Script?
> Would ideally want the program to somehow interface with the import scripts,
> so ideally, browser based.
> Any ideas?
you'll be able to do it from the browser. I think you'd almost have to write a
standalone executable and then use a browser to complete the upload normally.
It's kind of a clunky solve, but feasible. Alternately, you could tell them to
FTP it to a directory, then go to your program in a browser and select the file
to use from the FTP directory. Again, clunky... :(
Regards,
Shawn
--
Shawn Wilson
[email]shawn@glassgiant.com[/email]
[url]http://www.glassgiant.com[/url]
Shawn Wilson Guest
-
Eto Demerzel #18
Re: File() too slow
In article <3F747A12.D6D57D9A@glassgiant.com>, Shawn Wilson's output
was...This sounds like just the sort of thing java applets are useful for.>> > Thats not a bad idea. Would this be possible with Javascript? or maybe VB
> > Script?
> > Would ideally want the program to somehow interface with the import scripts,
> > so ideally, browser based.
> > Any ideas?
> JS, no for sure. VBScript - I doubt it, but I don't know VBScript. I doubt
> you'll be able to do it from the browser. I think you'd almost have to write a
> standalone executable and then use a browser to complete the upload normally.
> It's kind of a clunky solve, but feasible. Alternately, you could tell them to
> FTP it to a directory, then go to your program in a browser and select the file
> to use from the FTP directory. Again, clunky... :(
>
Perhaps have an applet in the web-page which selects the file, breaks it
into smaller chunks (and/or compresses), then calls a server-side script
to re-assemble the parts and then do whatever the script was supposed to
do with the file in the first place.
You might find some useful info at [url]http://javaboutique.internet.com/[/url] or
in comp.lang.java
Eto Demerzel Guest
-
Brent Rieck #19
Re: File() too slow
It sounds like you're using MySQL and if loading the data is still a
bottleneck, have you tried using the "LOAD DATA LOCAL INFILE ..." stuff?
I saw an order of magnitude improvement in import speed when I went
from manually splitting my CSVs to using LOAD DATA.
If you're also having problems uploading large files you'll also need to
set php's post_max_size and memory_limit (if it's enabled) to something
larger than the size of the largest file you expect.
RG wrote:I've had good luck with pair.com.> Any suggestions: PHP with GD, Multiple MySQL databases, password protect
> directories, 20gb month
--Brent
Brent Rieck Guest
-
Virgil Green #20
Re: File() too slow
"RG" <Me@NotTellingYa.com> wrote in message
news:3f73fdc5$0$65581$65c69314@mercury.nildram.net ...I believe the 'ini_set("upload_max_filesize", "64M");' needs to be set in>
> "Eto Demerzel" <eto.demerzel@fijivillage.com> wrote in message
> news:MPG.19de0adf1903d3b498971b@news-text.blueyonder.co.uk...>> > In article <3f73f748$0$65579$65c69314@mercury.nildram.net>, RG's output
> > was...> > IIRC - you can do something along the lines of:> > > > > I think I've found the problem: upload_max_filesize is 2M
> > > > > It is dieing, very poorly.
> > > > > You must have changed your php.ini?
> > > >
> > > > jupp .. changed to 32M, because i often need to transfer bigger
> > > > data in our intranet.
> > >
> > > I don't suppose there's a workaround for this?
> > > RG
> > >
> >
> > ini_set("upload_max_filesize", "64M");
> >
> >
> > - I understand this will only change the max size for operations in that
> > particular script - not for the whole server/virtual server.
>
> Tried that out but it seems that the file is uploaded before the script is
> executed which means, the file is dumped before the function is called.
> I'm sure my host wont want to change these settings, Rackshack (cheap).
> Looks like I'm gonna have to get some more expensive hosting.
> Any suggestions: PHP with GD, Multiple MySQL databases, password protect
> directories, 20gb month
> Thanks
> RG
the script in which the FORM element is placed, not in the script where the
file is being processed.
- Virgil
Virgil Green Guest



Reply With Quote

