|
Posted by Chung Leong on 01/15/06 02:58
gooze wrote:
> Hello
>
> I am working on an applicaion that shows several pictures on a webpage.
> These pictures are saved in a MySQL DB as BLOB. I noticed, that the web
> server suffers in its performance by printing the pictures. Let's say
> there are 20 pictures to show, there also are 20 queries to do. This is
> the way I am doing it up to now:
>
> index.php
> <?php
> foreach ($icons as $value) {
> echo '<img src="./show_icon.php?icon_id=' . $value . '">';
> }
> ?>
>
> show_icon.php
> <?php
> $query = "SELECT icon FROM pictures WHERE id='$_GET['icon_id'] ";
> $result = @mysql_query ($query) or die (mysql_error());
> $icon = @mysql_result ($result, 0, "icon");
>
> header("Content-type: image/png");
> echo $icon;
> ?>
>
> Actually this works quite well, but the performance is an issue. Is
> there a more simple or more elegant way than the code above? Is there
> actually a solution to do it with one query instead of 20 queries?
>
> Thanks for your help
> Stefan
The performance issue you're experiencing is unlikely to be caused by
the overhead of storing images in the database. The bottleneck is
usually the Internet. Even a slow server can retrieve data from the
database faster than can be transferred across the network.
There are a couple things that could slow things down. First, make sure
the images are cached on the client-side by sending the appropriate
HTTP headers. Second, check to see if session-auto-start is turn on. If
it is, then call session_write_close() before sending the image data.
[Back to original message]
|