Toon posts:

[PHP] upload van grote bestanden

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn upload script werkt perfect. Alleen bij grote bestanden of een trage internet connectie bots ik op de standaard max_execution_time van 30 seconden.

Helaas laat mijn hosting niet toe deze te verhogen. Dus had ik bij wijze van experiment de ftp-functies van php uitgeprobeerd. No avail! Fie hebben eveneens last van die max_execution_time :(

Dus nu de vraag, hoe kan ik grote bestanden uploaden zonder dat mijn scipts time-outen nog voor de file is upgeload? Ik heb iets opgevangen van ncftp maar ik vindt er niets over terug op php.net. Ik zie ook niet in waarom ncftp functies geen last zouden hebben van deze max_execution_time...

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Misschien een domme vraag (kan niet geheel helder nadenken met dit weer), maar wordt een script al uitgevoerd als het bestand begint met uploaden??

Ik bedoel: Als je een form post met een groot bestand erin, dan wordt normaal de pagina toch nog niet opgevraagd voordat het bestand geupload is? Oftewel: dan ligt het aan de browser expiration time in plaats van het scriptexecution time.

Nogmaals: dit is alleen een gedachtenspeling; Helder nadenken zit er niet goed in (al 5 uur bezig om 3 regels simpele code te schrijven :7)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 18 juni 2002 14:16 schreef elviver het volgende:
Geloof dat je gelijk hebt ja :)

Verwijderd

Topicstarter
Op dinsdag 18 juni 2002 14:19 schreef ACM het volgende:

[..]
Geloof dat je gelijk hebt ja :)
Goed, en wat doe je er tegen? Zonder dat ik aan iedereen moet gaan vragen om zijn browser instellingen aan te passen...
Dank,

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

ncftp is trouwens geen php-gedoe.

Het is een aparte ftp-tool dat op veel unices bestaat.
En die ook de leuke varianten 'nftpget' en 'ncftpput' kent. (download/upload via commandline/exec()/etc)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Waarom denk je trouwens dat je tegen de max_execution_time aanloopt? Is het mischien niet gewoon de max_upload_size (oid) ?

Daarnaast denk ik dat je met ftp op de server heel weinig kutn, tenzij je van iedereen die bestanden moet uploaden verwacht dat ze op hun eigen computer een ftp-server gaan draaien.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Ik vrees wijnig.. Het is namelijk een gebruikersinstelling, en die kun je dus niet serverside aanpassen (dôh :P). Heb je het over gebruikerskant, dan kan je misschien gaan denken aan JavaScript? Géééén idee hoor :)

Wat trouwens vreemd is.. Een script van mij deed er heel erg lang over voor hij iets ging uitpoepen naar de browser, 3+ minuten. Die timede NIET uit! XP + Internet Explorer + alle hotfixes + niet aangepaste timeout instellingen. Wat dat betreft zou ik nou juist weer zeggen dat het aan die upload ligt in plaats van aan de serverkant of aan de browserinstelling.

  • Nibbles
  • Registratie: Maart 2000
  • Laatst online: 16-04 12:46

Nibbles

just nibb it

Als ik bij bijv mijn HetNet webmail account een bestand van 6MB wil attachen zie ik ook het statusbalkje verlopen. Als hij bijna bij het einde is begint hij overnieuw, zonder de pagina te herladen. Dus er is wel een oplossing mogelijk.

Misschien dat hij hem in deeltjes splitst oid en dan weer aan elkaar plakt?

Verwijderd

Ik denk de max_upload_size.

Verwijderd

Topicstarter
Op dinsdag 18 juni 2002 14:38 schreef Janoz het volgende:
Waarom denk je trouwens dat je tegen de max_execution_time aanloopt? Is het mischien niet gewoon de max_upload_size (oid) ?
Omdat ik lokaal bestanden van ettelijke 100den MB kan overpompen (wat een fluitje van een cent is) en iemand met een kabelconnectie op de eigelijke server niet eens aan 10MB komt. Dus vraag ik nu aan de mensen om alles in zipkes te steken van +- 7MB. Niet echt praktisch dus :)

En als ik het zelf probeer (met mijn crappy kabel) dan zie ik die progress balk onderaan mijn browser (MS Exploder) steeds groter worden tot hij helemaal vol is. Maar dat bestand komt niet op mijn server. Dus logischer wijs besluit ik dan dat het een time-out is.

Upload via de php ftp-functies gaf expleciet een time-out error van die max_execution_time (als ik mij goed herinner - ook al een tijdje geleden). Maar nu weten we ook waarom: via form is het de browser die time-out. Via php ftp-functies is het de functie die time-out.

Maar zoals het er nu uitziet is ncftpput de oplossing in combinatie met exec(). Nu maar hopen dat mijn hosting dat ding draait natuurlijk...(Moet ik nog uitzoeken)

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op dinsdag 18 juni 2002 14:51 schreef fraggel75 het volgende:
Omdat ik lokaal bestanden van ettelijke 100den MB kan overpompen (wat een fluitje van een cent is) en iemand met een kabelconnectie op de eigelijke server niet eens aan 10MB komt.
Maar zijn de php- cq. server-instellingen lokaal en op de eigenlijke server gelijk?

Today's subliminal thought is:


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Op maandag 17 juni 2002 14:24 schreef fraggel75 het volgende:
[...]
Helaas laat mijn hosting niet toe deze te verhogen.
[...]
Nop, en die kan die dus ook niet aanpassen

Verwijderd

Topicstarter
Op dinsdag 18 juni 2002 16:37 schreef Annie het volgende:

[..]
Maar zijn de php- cq. server-instellingen lokaal en op de eigenlijke server gelijk?
Ja, daarvoor had ik wel gezorgd. Alleen was het niet toegelaten van mijn hosting om max_execution_time aan te passen wegens gevaar voor oneindige lussen en dergelijke. Wat ik best kon begrijpen :)

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Uh? Maar max filesize dus wel?

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
En als je nu eens set_time_limit(aantal_ms); aanroept boven je script?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Ik betwijfel, nee, ik weet wel zeker dat het niet aan de max execution time ligt.. Als het lokaal uploaden ook werkt, dan ligt het ook niet aan de maximale grote van een upload... Ik denk dat het toch echt een client-side timeout is..

Maar waarom laat je mensen bestanden van 100Mb uploaden via een webform? Kunnen ze dat niet veel beter met ftp doen?

Ik ben trouwens erg benieuwd wat je met de ftp-componenten van plan bent.. Zoals ik al eerder zei: Moeten alle gebruikers zelf een ftp-server gaan draaien?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Het ligt niet aan de max execution time, omdat zolang de gebruiker aan het uploaden is gaat dat tellertje niet lopen.

Pas als het geuploade bestand weggeschreven is in /tmp/ gaat dat tellertje tellen.

Het ligt dus mijns inziens aan de max upload setting.

Verwijderd

Op dinsdag 18 juni 2002 19:43 schreef FlamerX het volgende:
En als je nu eens set_time_limit(aantal_ms); aanroept boven je script?
of(0) voor geen time out

Verwijderd

Op dinsdag 18 juni 2002 19:58 schreef TimD het volgende:

[..]

of(0) voor geen time out
Lees dit eens:
Op maandag 17 juni 2002 14:24 schreef fraggel75 het volgende:
[...]
Helaas laat mijn hosting niet toe deze te verhogen. Dus had ik bij wijze van experiment de ftp-functies van php uitgeprobeerd. No avail! Fie hebben eveneens last van die max_execution_time :(
[...]

Verwijderd

Topicstarter
Op dinsdag 18 juni 2002 19:49 schreef Janoz het volgende:
Maar waarom laat je mensen bestanden van 100Mb uploaden via een webform? Kunnen ze dat niet veel beter met ftp doen?
Nee, het is niet de bedoeling dat gebruikers massaal beginnen uploaden. Die 100MB was gewoon een lokale test om te zien of dat script zijn ding wel doet.

Ik wil gewoon een upload script dat degelijk werkt OOK met grote bestanden. Nu moet ik de mensen vragen om hun bestanden op te splitsen in zipkes van niet groter dan 7MB. Dat is toch ook niet praktisch??? Upload moet dienen voor bv. het opsturen van digitale foto's van op reis. En dan zit je al rap aan enkele MB's.

Maar, ik ga binnenkort terug mijn upload script onder de loep nemen en wat uitproberen. Ik post hier wel mijn bevindingen B-)

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Even een kick, want ik heb vergelijkbare problemen.

Ik gebruik PHP voor een upload / download tool die ik gemaakt heb. Het werkte perfect totdat iemand me vertelde over dit probleem en ik een beetje ben gaan testen.

Ik krijg bij het uploaden van een groot bestand (zeg > 10/15 mb) een 'Cannot Find Server' error. Dit is dus een client side time out.

Ik heb de time_limit op 0 gezet en de max_upload_size en max_post_size allebei goed staan, dus dat is het probleem niet. Ik weet zeker dat alles verder klopt, want ik heb het grondig getest.

Weet iemand een oplossing voor dit probleem? Mischien een parameter voor de browser zodat die weet dat het ontzettend lang kan duren? Ik weet dat het mogelijk is, want een sites die bijvoorbeeld digitale foto's voor print service accepteren kunnen dat ook lang laten duren. Of mischien gebruiken die een work-around?

Ik zou zelf niet weten hoe ik dit zou kunnen oplossen.

Noushka's Magnificent Dream | Unity


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Heb je het probleem ook op andere pc's of met andere browsers? Een client time-out moet eigenlijk niet kunnen, in principe blijft je browser oneindig lang 'wachten' tot de pagina is geladen.

http://groups.google.nl/g...xchange3.lmu.ac.uk#link21
Misschien een oplossing...

[ Voor 49% gewijzigd door Postman op 20-10-2003 19:42 ]


Verwijderd

Ik zou zelf niet weten hoe ik dit zou kunnen oplossen.
Het HTTP-protocol is er ook niet echt op gebouwd om grote files over te pompen. Heb je al geprobeerd om in de HTML-code de MAX_FILE_SIZE op te geven?

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 15-08 18:56

alienfruit

the alien you never expected

Waarom maak je niet gebruik van een ActiveX/Java applet die het uploaden afhandeld :)

  • vargo
  • Registratie: Januari 2001
  • Laatst online: 13:35
Ik ben er toevallig mee bezig geweest en heb het eindelijk werkend gekregen.
Heb je in je apache httpd.conf (of gelijksoortig bij andere webserver) ook maximale execution time ingesteld?

  • vargo
  • Registratie: Januari 2001
  • Laatst online: 13:35
vargo schreef op 20 October 2003 @ 21:05:
Ik ben er toevallig dit weekend mee bezig geweest en heb het eindelijk werkend gekregen.
Heb je in je apache httpd.conf (of gelijksoortig bij andere webserver) ook maximale execution time ingesteld?
Aaargh... foutje (ik wilde editen en het werd quoten). Om deze post toch nog een beetje zinnig te maken: wat evt. ook nog handig is om na te kijken is of je php in savemode hebt draaien, want daarbij zijn geloof ik weer extra restricties.

[ Voor 30% gewijzigd door vargo op 20-10-2003 21:28 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik heb het probleem denk ik met alle browsers.

De MAX_FILE_SIZE klopt. Daar had ik al eens problemen mee, maar die staat goed nu.

Ik heb geen kennis van Java en ben ook niet al te bekend met ActiveX op het web.

Die httpd.conf zal ik even checken. Ik denk niet dat die zo is ingesteld.

En safemode staat uit.

Edit:

Ik heb alles nog even lokaal getest met de Timeout waarde in httpd.conf op 3 (seconden) en de KeepAliveTimeout op 1 (seconden). Ik krijg hier nu geen timeout of iets dergelijks. Hier doet hij het gewoon perfect. Op de andere machine waar het op staat, staat de timout waarschijnlijk op 300. Ik heb even getimed waarneer ik de melding krijg. Dat is ongeveer na 220 seconden. Ik denk dus niet dat dit de fout is.

Edit2:

Er is me nog even iets opgevallen. Als ik de fout eenmaal heb gekregen en dan op back (vorige) druk, dan krijg ik de pagina weer normaal weergegeven. Als ik dan op een link druk (maakt niet uit welke) krijg ik weer dezelfde fout, maar wel direct. Als ik dan weer op back druk werkt alles weer normaal. Mischien een clue voor wat het kan zijn?

Nogmeeredit:

Ik heb nog even zitten testen en ik krijg de fout toch wel best random eigenlijk. Als ik een tijdje blijf doorklikken krijg ik om de 5-6 keer klikken deze fout. Ik heb zoal gelezen dat het een bug zou kunnen zijn. Het is een Linux bak waar het op draait.

[ Voor 90% gewijzigd door Michali op 21-10-2003 11:18 ]

Noushka's Magnificent Dream | Unity

Pagina: 1