[PHP] Upload queue *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zenda
  • Registratie: Oktober 2001
  • Laatst online: 06-09 16:17

Zenda

goes milk!

Topicstarter
Ik ben bezig met een nieuwe website en daarvoor kunnen leden foto's uploden die bijvoorbeeld bij een opdracht horen. Nu upload ik de bestanden, verklein ze en ik crop ze voor thumbnails. Stel nou dat 100 leden tegelijkertijd uploaden, dan zou dat systeem waarop het wordt gehost het zwaar krijgen of zou de max_memory_size (volgens mij?) het niet verder toelaten dan een X aantal MB's.

Nu ben ik al ff wezen kijken voor een oplossing, en weet dat sites zoals Hyves, Facebook of Flickr het in een wachtrij (que) zetten.

Hoe kan ik dit nu het beste aanpakken? Data uploaden en vervolgens een cronjob maken die de verkleining en cropping doet? Want die data moet toch érgens worden opgeslagen qua upload, dus dat kan toch niet in een wachtrij? :)

Wat is de beste oplossing om foto's te uploaden zonder dat het systeem overbelast raakt?

[ Voor 8% gewijzigd door Zenda op 03-09-2008 10:32 ]

Zenda likes some milk every now and then..


Acties:
  • 0 Henk 'm!

  • DennusB
  • Registratie: Mei 2006
  • Niet online
Maak een database waarin je alle wachtende uploaders zet, als er dan 1 gaat uploaden zet je in de database "status=1", betekent dus dat ie bezig is.
Als dat 5 keer in je database staat, geef je bij de andere netjes de melding "U staat in de wachtrij, met ... wachtenden voor u"
Zodra iemand klaar is met uploaden gooi je die uit de wachtrij-database :)
Opgelost ?

Owner of DBIT Consultancy | DJ BassBrewer


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

@dennus: Dat is nogal lastig in een request gebaseerde omgeving waarbij de foto al opgestuurd wordt bij het eerste request.

@Zenda: Voor een wachtrij zul je de data uiteraard gewoon op moeten slaan. Daarvoor kun je ook een map op de server gebruiken. Die cronjob verwerkt elke x minuten de foto's die daarin geplaatst zijn.

Het punt is echter wel dat het behoorlijk tricky kan zijn:
Wat als je cronjob loopt en op dat moment komt er een bestand bij?
Wat als er zoveel bestanden in de wachtrij staan dat de job langer duurt dan de cron interval?

Uiteindelijk ben ik bang dat je, met de wachtrij, sneller problemen zult krijgen dan met een standaard implementatie zonder wachtrij. Je bent nu immers een niet bestaand probleem aan het oplossen. Je denkt dat het misschien een probleem zou kunnen veroorzaken mocht het daadwerkelijk enorm druk gaan worden. Daarin zitten een hele berg aannames.

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


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:08

BCC

Hyves, Facebook of Flickr gebruiken de wachtrij toch alleen voor het verwerken van de fotos en niet voor het uploaden? Daarnaast hebben die jongens ook geen max_memory_size instelling bij hun hoster :)

Je kan misschien beter kijken naar een flash/javascript uploader die het croppen en resizen clientside doet voor het uploaden. Dan verspreid je het werk en zou je de fotos 1 voor 1 kunnen laten uploaden met x milliseconden pauze ertussen om je hoster wat te ontlasten.

[ Voor 49% gewijzigd door BCC op 03-09-2008 10:47 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

Janoz schreef op woensdag 03 september 2008 @ 10:42:
Wat als je cronjob loopt en op dat moment komt er een bestand bij?
Wat als er zoveel bestanden in de wachtrij staan dat de job langer duurt dan de cron interval?
Beide gevallen zijn natuurlijk geen probleem. Samen met een tabelletje waarin je de bestandsnaam en de status zet, kunnen er zonder problemen twee jobs gedraait worden. Je moet de jobs gewoon goed bij laten houden met welke bestanden ze bezig zijn, zodat twee jobs niet hetzelfde bestand gaan openen.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Ik zeg niet dat het onoplosbaar is, ik zeg alleen dat het enkele van de vele dingen zijn waar je rekening mee moet houden. Daarnaast zou ik een batch proces waarbij uitlopende jobs ervoor kunnen zorgen dat er meerder naast elkaar gaan lopen niet direct 'geen probleem' noemen ;).

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


Acties:
  • 0 Henk 'm!

  • Zenda
  • Registratie: Oktober 2001
  • Laatst online: 06-09 16:17

Zenda

goes milk!

Topicstarter
Ik gebruik al een flash uploader, ik zal afwachten hoe het zal gaan maar dacht dat er misschien een 'standaard' oplossing was voor veel uploaden :). Tnx voor jullie replies..

Zenda likes some milk every now and then..

Pagina: 1