1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-24 07:22:16 +01:00
Files

119 lines
3.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 02b075821852f44e97742ba6f586cc2fa3272806 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="pdo-pgsql.lobcreate" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>Pdo\Pgsql::lobCreate</refname>
<refpurpose>Crear un nuevo objeto grande</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> crea un objeto grande
y devuelve el OID que lo referencia.
Puede abrirse para leer o escribir datos con
<methodname>Pdo\Pgsql::lobOpen</methodname>.
</simpara>
<simpara>
El OID puede almacenarse en columnas de tipo OID y utilizarse para referenciar
el objeto grande, sin que la fila crezca de manera arbitraria.
El objeto grande continuará existiendo en la base de datos hasta que
sea eliminado mediante la llamada a <methodname>Pdo\Pgsql::lobUnlink</methodname>.
</simpara>
<simpara>
Los objetos grandes son objetos voluminosos para utilizar.
De hecho, es necesario llamar a <methodname>Pdo\Pgsql::lobUnlink</methodname>
antes de eliminar la última fila que referencia el OID en toda la base de datos;
de lo contrario, los objetos grandes no referenciados permanecerán en el servidor indefinidamente.
Además, los objetos grandes no tienen controles de acceso.
Una alternativa es el tipo de columna bytea, que puede ser de hasta 1 Go de tamaño,
y este tipo de columna gestiona de manera transparente el almacenamiento para un tamaño de fila óptimo.
</simpara>
<note>
<simpara>
Esta función, y todas las manipulaciones del objeto grande,
deben ser llamadas y realizadas dentro de una transacción.
</simpara>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<simpara>
Devuelve el OID del nuevo objeto grande creado en caso de éxito,
&return.falseforfailure;.
</simpara>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example xml:id="pdo-pgsql.lobcreate.example.basic">
<title>Ejemplo de <methodname>Pdo\Pgsql::lobCreate</methodname></title>
<simpara>
Este ejemplo crea un nuevo objeto grande y copia el contenido
de un fichero dentro.
El OID es almacenado posteriormente en una tabla.
</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
-->