Re: Serving graphics from a database
From: Andy Hassall (andy_at_andyh.co.uk)
Date: 08/15/04
- Next message: steve: "Re: Re: Serving graphics from a database"
- Previous message: Michael Fesser: "Re: setlocale() has no effect"
- Maybe in reply to: steve: "Re: Serving graphics from a database"
- Next in thread: Margaret MacDonald: "Re: Serving graphics from a database"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sun, 15 Aug 2004 00:36:38 +0100
On Sat, 14 Aug 2004 13:28:17 GMT, Margaret MacDonald
<scratch65536@att.not.invalid> wrote:
>I want to store frequently-used graphic elements in a db and serve
>them from there rather than from the filesystem.
>
>Is there a better/faster way to do that than this? (error checking
>etc not shown)
>
>The relevant piece of the page:
><?php
> echo
> '<table><tr><td>
> <img src="ImageFromDB.php?Image=ImageIdentifer">
> </td></tr></table>' ;
>?>
>
>ImageFromDB.php:
><?php
> $imgname = $_GET['Image'] ;
> $dset = mysql_query( 'SELECT imagebits FROM graphics_table
> WHERE name="' . $imgname . '"' ) ;
> $rec = mysql_fetch_row($dset) ;
> $browser = fopen( 'php://output', 'w') ;
> header( 'Content-Type: image/png' ) ;
> fwrite( $browser, $rec[0] ) ;
>?>
>
>I fingered through the docs and did some googling, but didn't find
>anything obviously helpful. Many thanks for any insights.
Looks OK to me. A plain 'print' would likely do just as well as opening the
output stream as you've done, but there's nothing wrong with that. You might
want to change the mode to 'wb' though to indicate binary mode.
If these images are frequently accessed then it might be worth considering
using a filesystem-based cache if the database queries take noticable amounts
of resources.
General opinion on this group is to not store images in a database and instead
just store a filesystem path. However, I believe that if the images are
(a) user data rather than static source code of the site
(b) have relationships with data in the database
(c) have any sort of value with regards to the end-user
... then it's worth considering storing them in full in the database so you
can include them consistently in the database backups, and have the same
transaction guarantees as all the other data on them.
-- Andy Hassall / <andy@andyh.co.uk> / <http://www.andyh.co.uk> <http://www.andyhsoftware.co.uk/space> Space: disk usage analysis tool
- Next message: steve: "Re: Re: Serving graphics from a database"
- Previous message: Michael Fesser: "Re: setlocale() has no effect"
- Maybe in reply to: steve: "Re: Serving graphics from a database"
- Next in thread: Margaret MacDonald: "Re: Serving graphics from a database"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|