Beste tweakers,
Ik heb een site met wallpapers waarbij de afbeeldingen fysiek op de harde schijf staan. Deze wallpapers hebben een resolutie tussen de 800x600 en 3840x2400 en zijn tussen de 100KB en 4MB groot.
De gebruiker heeft de mogelijkheid om elk wallpaper in elk gewenste resolutie te downloaden omdat het systeem deze (met een extern programma) on the fly resized met het behouden van de verhouding. Vervolgens zal deze nieuwe resolutie voor de desbetreffende wallpaper fysiek opgeslagen worden zodat deze later niet opnieuw on the fly aangepast hoeft te worden.
Tijdens het ophalen/downloaden van de wallpaper wordt deze via PHP aangeboden zodat er in de database een teller bijgehouden kan worden om het aantal downloads weer te geven. Dat doe ik met de functie fopen() van PHP:
Nu kwam ik laatst op een artikel uit en dat bracht mij op een idee. Als ik alle wallpapers tijdens het uploaden base 64 encode in die string in de database opsla, heb ik meer controle en minder code nodig om fysieke wallpapers te verplaatsten of te verwijderen. Omdat ik de wallpapers toch al eerst ophaal met PHP leek het me geen gek idee om deze dan in de database te zetten.
Alleen nu vraag ik me af of dit wel efficiënt is en of het überhaupt een slim idee is. Wellicht dat ik alsnog dingen over het hoofd zie (bijvoorbeeld geheugengebruik) en wellicht is het een nadeel dat de database hierdoor enorm groot wordt.
Heeft iemand hier ervaringen mee of opmerkingen?
Mocht het een goed idee zijn, is het ook een goed idee om dit voor de thumbnails te doen? Deze worden echter niet eerst opgehaald door PHP en zijn dus direct benaderdbaar dus wellicht dat het in dit geval minder efficiënt is vanwege de snelheid en geheugen gebruik?
Ik heb een site met wallpapers waarbij de afbeeldingen fysiek op de harde schijf staan. Deze wallpapers hebben een resolutie tussen de 800x600 en 3840x2400 en zijn tussen de 100KB en 4MB groot.
De gebruiker heeft de mogelijkheid om elk wallpaper in elk gewenste resolutie te downloaden omdat het systeem deze (met een extern programma) on the fly resized met het behouden van de verhouding. Vervolgens zal deze nieuwe resolutie voor de desbetreffende wallpaper fysiek opgeslagen worden zodat deze later niet opnieuw on the fly aangepast hoeft te worden.
Tijdens het ophalen/downloaden van de wallpaper wordt deze via PHP aangeboden zodat er in de database een teller bijgehouden kan worden om het aantal downloads weer te geven. Dat doe ik met de functie fopen() van PHP:
PHP:
1
2
3
4
5
6
7
8
9
| if($fd = fopen('wallpaper.jpg', 'r')) { while(!feof($fd)) { echo fread($fd, 2048); } fclose($fd); } |
Nu kwam ik laatst op een artikel uit en dat bracht mij op een idee. Als ik alle wallpapers tijdens het uploaden base 64 encode in die string in de database opsla, heb ik meer controle en minder code nodig om fysieke wallpapers te verplaatsten of te verwijderen. Omdat ik de wallpapers toch al eerst ophaal met PHP leek het me geen gek idee om deze dan in de database te zetten.
Alleen nu vraag ik me af of dit wel efficiënt is en of het überhaupt een slim idee is. Wellicht dat ik alsnog dingen over het hoofd zie (bijvoorbeeld geheugengebruik) en wellicht is het een nadeel dat de database hierdoor enorm groot wordt.
Heeft iemand hier ervaringen mee of opmerkingen?
Mocht het een goed idee zijn, is het ook een goed idee om dit voor de thumbnails te doen? Deze worden echter niet eerst opgehaald door PHP en zijn dus direct benaderdbaar dus wellicht dat het in dit geval minder efficiënt is vanwege de snelheid en geheugen gebruik?