Toon posts:

[php] advies nodig: foto's wel of niet in database

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben een website aan het bouwen waar mensen zich kunnen aanmelden. ook een (pas)foto kunnen ze uploaden.

De vraag is: is het verstandig om de foto (max 150x150 gif/jpeg) in de mysql database op te slaan of gewoon als bestandje ?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Helaas zijn hier de afgelopen 2 maand meerdere topics over geweest...
Maar die staan niet meer in de DB.

Kwa snelheid is het zowiezo op de harddisk opslaan en de bestandsnaam in de DB... (bij tests van mij scheelde het een factor 6 ongeveer, tussen een php die het direct van de schijf las of een die het uit de db trok)
Kwa gebruiksgemak kan het handig zijn om het in de DB op te slaan, hou er wel rekening mee dat mysql's bij de meeste hosting-providers (nogal) wat trager zijn dan een test-db thuis....

  • Grum
  • Registratie: Juni 2001
  • Niet online
gebruiksgemak ??

ik vind files dan toch wat relaxter ... en het scheelt veel resources ...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 02 juni 2001 12:53 schreef Grum_ het volgende:
gebruiksgemak ??

ik vind files dan toch wat relaxter ... en het scheelt veel resources ...
Hangt van je definitie van gebruiksgemak af ;)

Maar idd, de resources-winst en snelheids-winst van gewoon (of dmv readfile()) files weegt niet op tegen de gemakken van de DB...

Verwijderd

gewoon als file opslaan, dat scheelt ontzettend veel resources.

Verwijderd

Het is absoluut niet (veel) moeilijker om ze gewoon als bestand op te slaan.
Heb het zelf niet getest, maar idd in de topics waar ACM het over had was iedereen (behalve Arien :D ) tegen het opslaan in een DB.

Verwijderd

Topicstarter
Thanx allemaal.

Als file dus. ik ga gelijk aan de slag om mijn scripje te bouwen.

Verwijderd

Het makkelijkst is (mijn ervaring) om ze op te slaan met als bestandsnaam de id van de user waar ie bij hoort... Dan hoef je dus ook niet de filename apart nog eens op te slaan.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Dan had ik het ook over foto's opslaan in het algemeen...
Maar idd, das een kleine extra optie die je nog kan gebruiken.

Nadeel is, dat het dan wel _allemaal_ .jpg oid moet zijn...

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op zaterdag 02 juni 2001 14:32 schreef ACM het volgende:
Dan had ik het ook over foto's opslaan in het algemeen...
Maar idd, das een kleine extra optie die je nog kan gebruiken.

Nadeel is, dat het dan wel _allemaal_ .jpg oid moet zijn...
Behalve als je dat weer in de tabel zet. Maar dat is dan weer complete overkill en onzinnig, en moet je je db ontwerp nakijken :)

Verwijderd

Belangrijk nadeel van niet in de db opslaan is dat je niet 100% zeker bent van consistente data.
Je kunt er vanuit je db gezien niet zeker van zijn dat een file daadwerkelijk op je fs staat.

Ik zou er voor kiezen om je files op je fs te houden om al genoemde redenen (zie andere posts) en omdat je MySQL gebruikt.

edit:

typo

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op zaterdag 02 juni 2001 14:41 schreef sjako het volgende:
Belangrijk nadeel van niet in de db opslaan is dat je niet 100% zeker bent van consistente data.
Je kunt er vanuit je db gezien niet zeker van zijn dat een file daadwerkelijk op je fs staat.

Ik zou er voor kiezen om je files op je fs te houden om al genoemde redenen (zie andere posts) en omdat je MySQL gebruikt.

edit:

typo
Maar dan kan je een cronjob laten lopen om 'm te controleren.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-02 12:22
Bovendien, als je de gebruikers namen van je gebruikers dusdanig filterd (bepaalde karakters eruit weren). Dan kan je dat ook nog is makkelijk als bestandsnaam gebruiken.

Of anders het gebrukers ID, die zul je ook wel hebben.

  • TiG
  • Registratie: Maart 2001
  • Laatst online: 16-01 19:34

TiG

Op zaterdag 02 juni 2001 14:32 schreef ACM het volgende:
Nadeel is, dat het dan wel _allemaal_ .jpg oid moet zijn...
Doe je toch gewoon
PHP:
1
2
3
4
5
<?
if(file_exists("filename.jpg")) $filename = "filename.jpg";
else if(file_exists("filename.gif")) $filename = "filename.gif";
else $filename = "geen plaatje";
?>

U gaat door voor de retorische vraag...


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op zaterdag 02 juni 2001 14:45 schreef TiG het volgende:

[..]

Doe je toch gewoon
PHP:
1
2
3
4
5
<?
if(file_exists("filename.jpg")) $filename = "filename.jpg";
else if(file_exists("filename.gif")) $filename = "filename.gif";
else $filename = "geen plaatje";
?>
DAT zal wel errug traag worden denk ik :)

Verwijderd

Hangt natuurlijk van je hosting af...
Bij WideXS geeft dit geen enkel probleem (ook mijn ervaring..)

  • Config
  • Registratie: Januari 2000
  • Laatst online: 06-01-2025
Op zaterdag 02 juni 2001 14:46 schreef Nielsz het volgende:

[..]

DAT zal wel errug traag worden denk ik :)
Waarom DAT nou weer :?

Verwijderd

't kan aan mij liggen hoor, maar je het toch zo wilt doen sla je toch lekker in je db op of het jpg/gif is? Dat werkt sneller dan de if exists methode hierboven.

en dan bijvoorbeeld en kolometje maken die foto heet.

als het 0 heeft, geen foto
1 jpg foto
2 gif foto
3 png foto

:)

Verwijderd

Of je slaat de foto's op zonder file extensie en checkt dan met GetImageSize() welk formaat het is... :P

Verwijderd

Op zaterdag 02 juni 2001 15:14 schreef Twan het volgende:
Of je slaat de foto's op zonder file extensie en checkt dan met GetImageSize() welk formaat het is... :P
ja, maar denk je dat 1 keer checken -> opslaan en bij het opvragen van de info, het formaat direct terug krijgen niet sneller werkt dan voor elke aanvraag weer het formaat bepalen?

  • TiG
  • Registratie: Maart 2001
  • Laatst online: 16-01 19:34

TiG

Op zaterdag 02 juni 2001 14:46 schreef Nielsz het volgende:
DAT zal wel errug traag worden denk ik :)
Ik doe het ook zo op een host waar ik geen mySQL ondersteuning heb en het levert niet echt vertraging op hoor.

U gaat door voor de retorische vraag...


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 02 juni 2001 15:18 schreef TiG het volgende:
Ik doe het ook zo op een host waar ik geen mySQL ondersteuning heb en het levert niet echt vertraging op hoor.
Ik merk op mijn server ook geen verschil tussen mysql en fs...
:P

Maar lokaal testen scheelde 't toch wel om een plaatje van 5MB van de disk ipv uit de DB te vissen :)

  • TiG
  • Registratie: Maart 2001
  • Laatst online: 16-01 19:34

TiG

Bij mij is juist de echte server sneller dan de server bij mij thuis. Mijn server thuis is namelijk een P200. Dus is de echt server meestal wel sneller :P

U gaat door voor de retorische vraag...


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 02 juni 2001 15:32 schreef TiG het volgende:
Bij mij is juist de echte server sneller dan de server bij mij thuis. Mijn server thuis is namelijk een P200. Dus is de echt server meestal wel sneller :P
Lokaal testen is ook een p200... maar mijn server (die van het plaatje links) is wat vlotter... ;) en heeft ook nog es een dedicated DB eracher...

Verwijderd

Op zaterdag 02 juni 2001 14:43 schreef Nielsz het volgende:

[..]

Maar dan kan je een cronjob laten lopen om 'm te controleren.
Tuurlijk kan dat.
Je kunt dan de data, die niet meer consistent is, weer updaten...
Ik zeg ook dat ik er zelf ook voor zal kiezen als ik met mysql moet werken.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op zaterdag 02 juni 2001 12:51 schreef ACM het volgende:
Kwa snelheid is het zowiezo op de harddisk opslaan en de bestandsnaam in de DB...
Hangt helemaal van het type db dat je gebruikt af.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 02 juni 2001 17:18 schreef Onno het volgende:
Hangt helemaal van het type db dat je gebruikt af.
en
Op zaterdag 02 juni 2001 12:45 schreef runningman het volgende:
in de mysql database op te slaan of gewoon als bestandje ?
Dan wel, of niet dan?

In sommige toepassingen kan een db sneller zijn, maar mysql wint het niet zo makkelijk van de meeste kernels...
Of wel?
Als je een dedicated raw-filesystem hebt, is het niet zo duidelijk, behalve dat die DB's (soms/vaak/hangt ervanaf) wat slomer zijn.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Oepsie... dat woordje mysql had ik even over het hoofd gezien. :o

  • Grum
  • Registratie: Juni 2001
  • Niet online
Op zaterdag 02 juni 2001 15:14 schreef Twan het volgende:
Of je slaat de foto's op zonder file extensie en checkt dan met GetImageSize() welk formaat het is... :P
dit is dus allemaal niet nodig ... en jah dat is getest (ook door ACM :P)

je browser snaptet zelf

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 02 juni 2001 17:58 schreef Grum_ het volgende:
dit is dus allemaal niet nodig ... en jah dat is getest (ook door ACM :P)

je browser snaptet zelf
Is geen garantie natuurlijk dat het _elke_ keer goedgaat.
Maar het werkte idd wel...
Pagina: 1