14. august 2007 - 06:32Der er
11 kommentarer og 1 løsning
Timeout i perl?
Jeg har sat et perl script til at tage imod STDIN fra en browser upload formular. Via browseren uploader jeg en stor fil.
Det virker fint, indtil jeg forsøger at uploade filer på 400+ mb. Med filer større end 4-500 mb stopper scriptet pludselig uden at smide en fejl.
Jeg har sat en log funktion ind mange steder i scriptet, men det ser ud til at det bare dør et sted under læsning af STDIN. Apache error loggen indeholder heller ikke noget.
Browseren sender/arbejder indtil hele filen er uploadet.
Jeg bruger både -w og strict.
Findes der en timeout funktion i perl som skal forhøjes? Hvad kan ellers rette problemet?
Med akut mangel på blandt andet IT- og Tech kompetencer er det nødvendigt at gøre op med traditionel uddannelsestænkning.
Slettet bruger
14. august 2007 - 10:12#1
kan du forklare noget mere om hvilken kode der er anvendt?
Synes godt om
Slettet bruger
14. august 2007 - 11:28#2
Det er ganske simpelt denne loop som er aktiv indtil scriptet dør:
while($data = <STDIN>) { }
Synes godt om
Slettet bruger
14. august 2007 - 11:40#3
har du overvejet at anvende CGI modulet til at håndtere det med i stedet?
hvilken type fil er det du uploader?
Synes godt om
Slettet bruger
14. august 2007 - 11:55#4
Jeg kender ikke meget til CGI modulet, men da jeg arbejder med meget store filer (op til 1 gb) vil jeg synes at det er en fordel at bruge mest mulig "basis" programmering. Desuden har jeg brug for at lave operationer undervejs mens datafilen modtages.
Filtype er irrelevant, jeg samme fejl ved f.eks. zip og avi.
Synes godt om
Slettet bruger
15. august 2007 - 13:12#5
CGI modulet sparer dig for en masse manuelt udviklings arbejde.
Hvad er hele <form> linien på sin side?
Typen kan også have noget at sige. Jeg vil lige prøve at lave en test med CGI modulet
Synes godt om
Slettet bruger
15. august 2007 - 21:34#6
Ja, CGIen sparer en del arbejde, men giver dig også mindre kontrol. F.eks. mener jeg ikke at jeg kan modtage x byte fra STDIN, lave noget andet, og så modtage de næste x byte.
Det har du sikkert ret i, jeg lavede en test igår med CGI modulet. Uploadede en 1.8Gb ISO fil. CGI henter filen ind et eller andet sted og stiller et handle tilrådighed, så kan man så selv bestemme hvor man ønsker at flytte den hen.
Men det er rigtigt at den laver sikkert noget totalt ineffektivt i og med at den henter filen ned, og så skal man kopiere den på plads.
Men jeg kan ikke finde nogen som helst grund til at den skulle stoppe midt i det hele, ok mit script gav fejl når den var værdig men alle 1.8Gb var fint hentet ned.
Husker du at køre i binmode?
Synes godt om
Slettet bruger
16. august 2007 - 12:10#8
Jeg har aldrig brugt binmode, men scriptet kører jo fint som det er nu, så længe filen ikke er for stor. Hvis jeg uploader en fil af samme type (f.eks. avi), blot større, så dør det.
Synes godt om
Slettet bruger
16. august 2007 - 12:31#9
og der kommer slet ingen errors nogen steder? slet ikke i nogen log?
Hvor stor en fil når den at lave? måske kan det sige noget.
Til binærdata er det sikreste at man sørger for at ens handles kører i binmode, ikke helt klar over hvorfor, men det er hvad jeg har læst mig til.
hvad er det mindste uploadings script du kan lave som stadigvæk giver fejlen, så kan du jo poste det script her, så vi andre kan teste det.
Jeg tror ikke der er noget time-out i perl. Kan det være timeout i din browser? Kan det være timeout i Apache (eller hvad du nu bruger som http-server)?
Synes godt om
Slettet bruger
29. august 2007 - 12:55#11
Jeg kan se at min sidste kommentar aldrig blev skrevet herinde. Hvordan kan en hjemmeside som eksperten.dk IKKE rette deres timeout-fejl mht. sessions/cookies???
Anyhoo, jeg prøvede at sætte scriptet til at udskrive et punktum hvert minut for at browseren ikke lavede timeout. Det ændrede ikke noget, og jeg har testet på flere computere i flere browsere.
Jeg kan kun finde en receive/send timeout i apache. Den er på 20 sekunder, så den burde ikke blive aktiveret. Jeg kan dog prøve at sætte den op mens jeg tester nogle andre ting...
Ellers skriver jeg herinde igen når jeg har en skrabet version af scriptet som I kan teste/kigge på.
Synes godt om
Slettet bruger
12. oktober 2010 - 21:14#12
Ingen løsning :(
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.