Toon posts:

[MySQL] Welke upload manier?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mensen!
Op de een of andere manier moet ik het voor elkaar zien te krijgen om een file ter grootte van ca. 10MB in een database (MySQL) te pompen. Maar wat is daarvoor de beste manier?
De volgende manier heb ik geprobeerd:

Via een programma uploaden via een BlobStream. Maar helaas, een file groter dan 2MB neemt ruim een kwartier in over 10MB netwerk.

Dus misschien is de oplossing om het via een PHP-script te doen. FTP is eventueel ook te regelen.

Stel dat het via PHP gaat, een file groter dan 6 mb wordt via een ISDN-lijn geupload. Tegen welke problemen loop ik dan op?
- HTTP timeout?

Kan iemand hier meer duidelijkheid geven. Of misschien heeft iemand het hier wel ongeveer op dezelfde manier draaien.

Tnx!

Verwijderd

UTFS >:)

  • Orphix
  • Registratie: Februari 2000
  • Niet online
In welk formaat is dat bestand?
MySQL ondersteund zelf nml ook een command om data-bestanden in te lezen.
Dat van die HTTP-timeout zou ik niet zeker weten. Maar ik neem aan dat je geen timeout kan krijgen zolang de webserver nog POST data (het bestand) aan het ontvangen is. Dan kan je hoogstens een time-out krijgen bij het verwerken van de data.

Verwijderd

Topicstarter
Op woensdag 12 december 2001 16:07 schreef Orphix het volgende:
In welk formaat is dat bestand?
MySQL ondersteund zelf nml ook een command om data-bestanden in te lezen.
Dat van die HTTP-timeout zou ik niet zeker weten. Maar ik neem aan dat je geen timeout kan krijgen zolang de webserver nog POST data (het bestand) aan het ontvangen is. Dan kan je hoogstens een time-out krijgen bij het verwerken van de data.
't Is hardstikke binair. Over dat timeout: 't is mooi dat ik 't weet.

-- Janno

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:51

Janoz

Moderator Devschuur®

!litemod

Op woensdag 12 december 2001 16:07 schreef Orphix het volgende:
Maar ik neem aan dat je geen timeout kan krijgen zolang de webserver nog POST data (het bestand) aan het ontvangen is. Dan kan je hoogstens een time-out krijgen bij het verwerken van de data.
Of users die op de stop-knop drukken omdat ze het id hebben dat er helemaal niks gebeurd..

Maar IMHO is het beter om die bestanden gewoon als bestanden op te slaan, en in de DB alleen een lokatie op te slaan. Ik weet niet precies wat de bedoeling is, maar als het niet strict noodzakelijk is om die bestanden in de db te zetten zou ik het ook niet doen..

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


Verwijderd

Topicstarter
Zoals het nu gaat heb ik er 100% controle over.
Maar goed, 't werkt nou aardig, in php.ini de uploadsize van een file verhoogd tot 100M. Maar waarom krijg ik de volgende error zodra ik 4.3MB upload?

Warning: fopen("none","r+") - No such file or directory in /home/janno/cvs/dcms_std_web2/admin/upload.php on line 16

hij probeert dus de geuploade file te openen, maar die is te groot, waardoor de file none heet. Hoe kan ik er toch voor zorgen dat dit wel goed gaat, want een file van 3MB gaat gewoon goed.

Dit heeft in eerste instantie niets met het in de db plaatsen te maken.
--Janno

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 17-08 14:28

Apache

amateur software devver

memory limit in de php.ini moet ook hoger d8 ik.

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Op woensdag 12 december 2001 21:01 schreef Apache het volgende:
memory limit in de php.ini moet ook hoger d8 ik.
Ok, in PHP alles omhoog geschroeft. En het eens iets anders aangepakt, want het werkte nog niet!
Tot nu toe deed ik altijd:
- file via form uploaden
- in db proppen.
- Files groter dan 4MB werden niet geaccepteerd.

Nu geprobeerd:
- File geupload naar server (6.5MB)
- Script aangepast, nu keihard de file aangewezen
- File ingelezen
- File in db gepropt
- Geen problemen!

De script riep ik nog steeds op via http://server/file_upload.php
en zodra ik die opriep, begon hij met uploaden.

Zit het probleem 'm dus in Apache? Want het gaat nu wel goed, het enige wat 'ie niet doet is de form-file neerzetten in /tmp/<randomblabla>!!

Dus: -file neergezet in /home/users/janno/thisTestFile.exe
-rechtstreeks via http script opgeroepen.

Waar zit de bottleneck?

Verwijderd

Op donderdag 13 december 2001 19:37...
-- Janno
Sorry, ff offtopic:
Uit de FAQ: Wij tweakers doen elkaar permanent de groeten. Het is dus niet nodig om steeds ruimteverspillende "greetz [user]" of iets dergelijks onder je post te plakken.

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 17-08 14:28

Apache

amateur software devver

heeft apache schrijfrechten in /tmp ?

If it ain't broken it doesn't have enough features


Verwijderd

Topicstarter
Op donderdag 13 december 2001 19:47 schreef Apache het volgende:
heeft apache schrijfrechten in /tmp ?
Ja, want files kleiner dan ~4.5MB gaan wel relaxed. Maar zodra het groter wordt, maakt PHP van de filename 'none', en die kan 'ie uiteraard niet openen...
Kleinere files gaan dus perfect.

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op woensdag 12 december 2001 20:57 schreef Boer_Frients het volgende:
Zoals het nu gaat heb ik er 100% controle over.
Maar goed, 't werkt nou aardig, in php.ini de uploadsize van een file verhoogd tot 100M. Maar waarom krijg ik de volgende error zodra ik 4.3MB upload?

Warning: fopen("none","r+") - No such file or directory in /home/janno/cvs/dcms_std_web2/admin/upload.php on line 16

hij probeert dus de geuploade file te openen, maar die is te groot, waardoor de file none heet. Hoe kan ik er toch voor zorgen dat dit wel goed gaat, want een file van 3MB gaat gewoon goed.

Dit heeft in eerste instantie niets met het in de db plaatsen te maken.
--Janno
FYI: als et bestand 'none' heet is er NIX geupload (of je moet natuurlijk et bestand none uploaden >:) )

Hoe kom je er btw bij dat 'Not Found' zou zeggen dat je file te groot was ? >:)

[edit]Zo te horen (lezen) heb je alle rechten op de bak waar de file heen moet .. waarom probeer je niet 1 van de meer logische alternatieven .. ftp/scp? en dan lokaal vanaf die bak het bestand in mysql te stoppen.

Verwijderd

om 10 mb in je database te pompen, daar is geen goede manier voor.. iets slechters kan ik me niet indenken..

upload je file met copy (php.net/copy) en plant alleen de link in je mysql db..

Om de timeout te voorkomen, stel iets in als set_time_out(3600000) ofzo >:) ff kijken op php.net naar (php.net/set-time-out) kweet de naam v/d functie niet meer recht uit men kop

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15:51

Janoz

Moderator Devschuur®

!litemod

Appache heeft zelf trouwens ook een upload grootte limit.. Loop je daar mischien tegenaan?

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


Verwijderd

Topicstarter
Op vrijdag 14 december 2001 12:30 schreef Janoz het volgende:
Appache heeft zelf trouwens ook een upload grootte limit.. Loop je daar mischien tegenaan?
Waarschijnlijk wel. Omdat je in php in kan stellen wat je wilt, maar het helpt niet. Weet jij toevallig waar die configoptie ergens rondhangt?

Verwijderd

Topicstarter
FYI: als et bestand 'none' heet is er NIX geupload (of je moet natuurlijk et bestand none uploaden >:) )
Er is wel wat geupload, maar omdat het te groot is, zou het kunnen dat hij het niet saved.
Hoe kom je er btw bij dat 'Not Found' zou zeggen dat je file te groot was ? >:)
Omdat kleinere files _wel_ goed gaan. En zodra het blijkbaar een tegrote POST wordt, saved 'ie niks en geeft 'ie de filename 'none' door, normaal gesproken zou dit iets zijn als '/tmp/myRand2343243' oid.
[edit]Zo te horen (lezen) heb je alle rechten op de bak waar de file heen moet .. waarom probeer je niet 1 van de meer logische alternatieven .. ftp/scp? en dan lokaal vanaf die bak het bestand in mysql te stoppen.
Daar ben ik ook mee bezig, het voordeel van zo'n file in de db is dat je er 100% controle over hebt. Het gaat om files die niet iedereen zomaar mag downloaden. En na een goeie login, kan je dat wel regelen.

Maar wat ik nu uit probeer te werken is idd een gewone file.
Die staat ergens buiten de webserver root. Waardoor je 'm niet rechtstreeks kan oproepen. Hela, je kunt dat gewoon met dezelfde user-script regelen, want je leest de file in, en je echoed 'm zo naar buiten. Ha! 's Effe kijken of we daar al wat mee kunnen... :)!

Verwijderd

Topicstarter
om 10 mb in je database te pompen, daar is geen goede manier voor.. iets slechters kan ik me niet indenken..
Zo? Waarom is daar dan geen goeie manier voor? 't Gaat perfect, alleen het uploaden gaat niet goed. Zodra je de file al op de server hebt staan is er niets meer aan de hand.
upload je file met copy (php.net/copy) en plant alleen de link in je mysql db..
Ja, dat wordt het dus uiteindelijk, maar niet op dit moment.
Om de timeout te voorkomen, stel iets in als set_time_out(3600000) ofzo >:) ff kijken op php.net naar (php.net/set-time-out) kweet de naam v/d functie niet meer recht uit men kop
Dat is ook niet meer nodig, zolang de browser aan het uploaden is, doet 'ie niets aan timeouten...

  • Steven
  • Registratie: December 2000
  • Laatst online: 25-08 14:01
Daar ben ik ook mee bezig, het voordeel van zo'n file in de db is dat je er 100% controle over hebt. Het gaat om files die niet iedereen zomaar mag downloaden. En na een goeie login, kan je dat wel regelen.
Diezelfde veiligheid heb je toch ook als je hem in een map zet die NIET rechtstreeks benaderd kan worden (via clients natuurlijk)?

Verwijderd

Topicstarter
Diezelfde veiligheid heb je toch ook als je hem in een map zet die NIET rechtstreeks benaderd kan worden (via clients natuurlijk)?
Precies. Maar het upload probleem blijf ik wel hebben, ik schrijf 'm dan niet meer weg in een db, maar ik kopieer een file. Het probleem is nu: waarom gaat het uploaden van files groter dan 4.5MB fout? Hieronder php config vars:
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

memory_limit = 100M ; Maximum amount of memory a script may consume (8MB)

; 100M is natuurlijk veel te gek, maar da's ff op proef.

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = /tmp

; Maximum allowed size for uploaded files.
upload_max_filesize = 100M

; Stukje verder:
; Maximum size of POST data that PHP will accept.
post_max_size = 100M
Voor zover ik weet moeten er niet nog meer variabelen aangepast worden. We gaan hier wel een beetje extreem, maar dat is ff testwerk, schroeven we zo naar beneden.
Waarschijnlijk toch ietsjes meer apache probleem. Maar welke var?

  • Steven
  • Registratie: December 2000
  • Laatst online: 25-08 14:01
Zit het probleem in de tijd die het duurt om het bestand te uploaden of echt puur inde grote?

Verwijderd

Topicstarter
Op zaterdag 15 december 2001 22:35 schreef Steven_NL het volgende:
Zit het probleem in de tijd die het duurt om het bestand te uploaden of echt puur inde grote?
Puur in de grootte, want het gaat gewoon via een 10mb lannetje, tenminste, dat denk ik. Want het gaat als volgt:
4.5MB: verzenden, (balkje IE gaat al), balkje gaat naar 100% en all is ok.
6MB: verzenden, balke IE gaat ook ), heeft 'ie zo'n 3/4 gehad, komt 'ie gelijk met de pagina voor z'n neus zonder dat 'ie het volledig geupload heeft.

  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 29-01 20:14

megamuch

Tring Tring!

apache heeft zelf ook in 1 of ander ini bestandje (of conf weet ik veel) max post size (max post data ?? anyone?) staan.

Zoek die ff op want daar loop je nu tegenaan. Apache kapt die stream namelijk af en schrijft dus ook niks weg. Jou script gaat dan wat doen met iets wat er niet is.

Hope this helps.

(tenzij je dit al verhoogd had, maar niet kunnen vinden in je posts..)

Verstand van Voip? Ik heb een leuke baan voor je!

Pagina: 1