PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.php > Serving Large Data From Files or From Blobs
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Serving Large Data From Files or From Blobs

Réponse
 
LinkBack Outils de la discussion
Vieux 15/02/2008, 17h44   #1
FeelLikeANut@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Serving Large Data From Files or From Blobs

My question is partly a language issue (memory) and partly a Web issue
(where the program runs), so I hope everyone will be open to ing.

Users may submit and store pictures with my program. I have the choice
of storing these pictures either as files on the server or as a blob
in the database. The pictures are just user data, and it seems logical
to keep them in the database with all the other data. But I'm
concerned about how to serve these pictures. I can write a program to
handle image requests and return the appropriate picture from the
database. But it seems to me this means the picture will need to be
read from the database and stored in memory, in a variable, then
written from the variable to the HTTP response.

The part where the whole picture is stored in a variable is the part
that worries me. Is this impractical? Or merely a bad idea? Is storing
the pictures as files, allowing the server to serve them as it would
server anything else, the best option?
  Réponse avec citation
Vieux 15/02/2008, 18h00   #2
xhoster@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Serving Large Data From Files or From Blobs

FeelLikeANut@gmail.com wrote:
> My question is partly a language issue (memory) and partly a Web issue
> (where the program runs), so I hope everyone will be open to ing.
>
> Users may submit and store pictures with my program. I have the choice
> of storing these pictures either as files on the server or as a blob
> in the database. The pictures are just user data, and it seems logical
> to keep them in the database with all the other data. But I'm
> concerned about how to serve these pictures. I can write a program to
> handle image requests and return the appropriate picture from the
> database. But it seems to me this means the picture will need to be
> read from the database and stored in memory, in a variable, then
> written from the variable to the HTTP response.


Databases that support blob types generally support ways to either stream
those blobs or efficiently read them in chunks. How to do that would
depend on the specifics of the database being used.

How are you getting the data into the database in the first place without
having it all in memory at once?

> The part where the whole picture is stored in a variable is the part
> that worries me. Is this impractical?


It depends on the maximum practical size of the image, and the amount of
memory your server has. Only you can know those things.


> Or merely a bad idea? Is storing
> the pictures as files, allowing the server to serve them as it would
> server anything else, the best option?


Do the file contents need the same transactional behavior (ACID, etc.)
as the rest of the stuff in database?

Xho

--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.
  Réponse avec citation
Vieux 15/02/2008, 18h17   #3
Rik Wasmus
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Serving Large Data From Files or From Blobs

On Fri, 15 Feb 2008 18:44:50 +0100, <FeelLikeANut@gmail.com> wrote:

> My question is partly a language issue (memory) and partly a Web issue
> (where the program runs), so I hope everyone will be open to ing.
>
> Users may submit and store pictures with my program. I have the choice
> of storing these pictures either as files on the server or as a blob
> in the database. The pictures are just user data, and it seems logical
> to keep them in the database with all the other data. But I'm
> concerned about how to serve these pictures. I can write a program to
> handle image requests and return the appropriate picture from the
> database. But it seems to me this means the picture will need to be
> read from the database and stored in memory, in a variable, then
> written from the variable to the HTTP response.
>
> The part where the whole picture is stored in a variable is the part
> that worries me. Is this impractical? Or merely a bad idea? Is storing
> the pictures as files, allowing the server to serve them as it would
> server anything else, the best option?



Insertion & retrieving is very much streamlined (huhu, pun not intended,
but it indeed uses streams) with PDO, look at the Large Objects (LOB)
example at <http://nl.php.net/pdo>:

Insertion:
<?php
$db = new PDO();//put your connections variables here
$stmt = $db->prepare("INSERT INTO tablename (image) values (?)");
$fp = fopen($_FILES['file']['tmp_name'], 'rb');
$stmt->bindParam(1, $fp, PDO::PARAM_LOB);
$stmt->execute();
fclose($fp);
?>

Retrieval:
<?php
$db = new PDO();//put your connections variables here
$stmt = $db->prepare("SELECT image FROM tablename WHERE id = ?");
$stmt->bindParam(1,$_GET['id'],PDO::PARAM_INT);
$stmt->execute();
$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: image/png");//or other format...
fpassthru($lob);
?>
--
Rik Wasmus
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 17h18.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11646 seconds with 11 queries