1
0
mirror of https://github.com/php/doc-fr.git synced 2026-03-24 07:02:06 +01:00
Files
2024-12-05 19:35:00 +00:00

119 lines
3.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 02b075821852f44e97742ba6f586cc2fa3272806 Maintainer: Fan2Shrek Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="pdo-pgsql.lobcreate" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>Pdo\Pgsql::lobCreate</refname>
<refpurpose>Créer un nouvel objet large</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="Pdo\\Pgsql">
<modifier>public</modifier> <type class="union"><type>string</type><type>false</type></type><methodname>Pdo\Pgsql::lobCreate</methodname>
<void/>
</methodsynopsis>
<simpara>
<methodname>Pdo\Pgsql::lobCreate</methodname> crée un objet large
et retourne l'OID qui le référence.
Il peut être ouvert pour lire ou écrire des données avec
<methodname>Pdo\Pgsql::lobOpen</methodname>.
</simpara>
<simpara>
L'OID peut être stocké dans des colonnes de type OID et être utilisé pour référencer
l'objet large, sans que la ligne ne grossisse de manière arbitraire.
L'objet large continuera d'exister dans la base de données jusqu'à ce qu'il
soit supprimé en appelant <methodname>Pdo\Pgsql::lobUnlink</methodname>.
</simpara>
<simpara>
Les objets larges sont des objets volumineux à utiliser.
En effet, il est nécessaire d'appeler <methodname>Pdo\Pgsql::lobUnlink</methodname>
avant de supprimer la dernière ligne référençant l'OID dans toute la base de données ;
sinon, les objets larges non référencés resteront sur le serveur indéfiniment.
De plus, les objets larges n'ont pas de contrôles d'accès.
Une alternative est le type de colonne bytea, qui peut être jusqu'à 1 Go de taille,
et ce type de colonne gère de manière transparente le stockage pour une taille de ligne optimale.
</simpara>
<note>
<simpara>
Cette fonction, et toutes les manipulations de l'objet large,
doivent être appelées et effectuées dans une transaction.
</simpara>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Renvoie l'OID du nouvel objet large créé en cas de succès,
&return.falseforfailure;.
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example xml:id="pdo-pgsql.lobcreate.example.basic">
<title><methodname>Pdo\Pgsql::lobCreate</methodname> example</title>
<simpara>
Cet exemple crée un nouvel objet large et copie le contenu
d'un fichier dedans.
L'OID est ensuite stocké dans une table.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
$db = new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$oid = $db->lobCreate();
$stream = $db->lobOpen($oid, 'w');
$local = fopen($filename, 'rb');
stream_copy_to_stream($local, $stream);
$local = null;
$stream = null;
$stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)");
$stmt->execute([$some_id, $oid]);
$db->commit();
?>
]]>
</programlisting>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><methodname>Pdo\Pgsql::lobOpen</methodname></member>
<member><methodname>Pdo\Pgsql::lobUnlink</methodname></member>
<member><function>pg_lo_create</function></member>
<member><function>pg_lo_open</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->