mirror of
https://github.com/php/doc-es.git
synced 2026-03-26 08:22:08 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@333835 c90b9560-bf6c-de11-be94-00142212c4b1
149 lines
5.5 KiB
XML
149 lines
5.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 7ae525d165ef8f5575bff8b76e3cc6970df9df77 Maintainer: seros Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<chapter xml:id="session.upload-progress" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Progreso de Subida en Sesiones</title>
|
|
|
|
<para>
|
|
Cuando la opción INI
|
|
<link linkend="ini.session.upload-progress.enabled">session.upload_progress.enabled</link>
|
|
está habilitada, PHP podrá rastrear el progreso de subida de
|
|
ficheros individuales que están siendo subidos.
|
|
Esta información no es particularmente útil para la petición de subida real
|
|
en sí misma, pero durante la subida del archivo, una aplicación puede enviar una petición POST
|
|
a un nodo distinto (mediante <acronym>XHR</acronym> por ejemplo) para comprobar el
|
|
estado.
|
|
</para>
|
|
<para>
|
|
El progreso de subida estará disponible en la variable superglobal <varname>$_SESSION</varname>
|
|
cuando una subida está en progreso, y al usar POST con una variable con
|
|
el mismo nombre al que está establecido el ajuste INI
|
|
<link linkend="ini.session.upload-progress.name">session.upload_progress.name</link>.
|
|
Cuando PHP detecta tales peticiones POST,
|
|
rellenará un array en la variable
|
|
<varname>$_SESSION</varname>, donde el índice es un valor concatenado de las opciones INI
|
|
<link linkend="ini.session.upload-progress.prefix">session.upload_progress.prefix</link>
|
|
y
|
|
<link linkend="ini.session.upload-progress.name">session.upload_progress.name</link>.
|
|
La clave se recupera normalmente leyendo estas opciones INI,
|
|
es decir
|
|
<informalexample>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$clave = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")];
|
|
var_dump($_SESSION[$clave]);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
<para>
|
|
También es posible <emphasis>cancelar</emphasis> la subida de ficheros que está
|
|
en progreso, estableciendo la clave <literal>$_SESSION[$clave]["cancel_upload"]</literal> a
|
|
&true;.
|
|
Cuando se suben múltiples ficheros en la misma petición, esto solamente cancelará la
|
|
subida de ficheros que está en progreso, y las subidas de ficheros pendientes, pero no
|
|
eliminará de manera satisfactoria las subidas completadas.
|
|
Cuando una subida se cancela de esta manera, la clave <literal>error</literal> del
|
|
array <varname>$_FILES</varname> será establecida a
|
|
<constant>UPLOAD_ERR_EXTENSION</constant>.
|
|
</para>
|
|
<para>
|
|
Las opciones INI
|
|
<link linkend="ini.session.upload-progress.freq">session.upload_progress.freq</link>
|
|
y
|
|
<link linkend="ini.session.upload-progress.min-freq">session.upload_progress.min_freq</link>
|
|
controlan con qué frecuencia debería ser recalculada la información del progreso de
|
|
subida.
|
|
Con una cantidad razonable de estos dos ajustes, la sobrecarga de esta
|
|
característica es casi inexistente
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Ejemplo de información</title>
|
|
<para>
|
|
Ejemplo de la esctructura del array del progreso de subida.
|
|
</para>
|
|
<programlisting role="html" xml:id="session.upload-progress.example-form">
|
|
<![CDATA[
|
|
<form action="upload.php" method="POST" enctype="multipart/form-data">
|
|
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />
|
|
<input type="file" name="file1" />
|
|
<input type="file" name="file2" />
|
|
<input type="submit" />
|
|
</form>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
La información almacenada en la sesión se parecerá a esta:
|
|
</para>
|
|
<programlisting role="php" xml:id="session.upload-progress.example-array">
|
|
<![CDATA[
|
|
<?php
|
|
$_SESSION["upload_progress_123"] = array(
|
|
"start_time" => 1234567890, // El instante de la petición
|
|
"content_length" => 57343257, // longitud del contenido de POST
|
|
"bytes_processed" => 453489, // Cantidad de bytes recibidos y procesados
|
|
"done" => false, // True cuando el gestor de POST ha finalizado, satisfactoriamente o no
|
|
"files" => array(
|
|
0 => array(
|
|
"field_name" => "file1", // nombre del campo <input/>
|
|
// Los siguientes 3 elementos son iguales que aquellos de $_FILES
|
|
"name" => "foo.avi",
|
|
"tmp_name" => "/tmp/phpxxxxxx",
|
|
"error" => 0,
|
|
"done" => true, // True cuando el gestor de POST ha terminado de manejar este fichero
|
|
"start_time" => 1234567890, // Cuándo se empezo a procesar este fichero
|
|
"bytes_processed" => 57343250, // Número de bytes recibidos y procesados de este fichero
|
|
),
|
|
// Otro fichero, no terminado de subir, en la misma petición
|
|
1 => array(
|
|
"field_name" => "file2",
|
|
"name" => "bar.avi",
|
|
"tmp_name" => NULL,
|
|
"error" => 0,
|
|
"done" => false,
|
|
"start_time" => 1234567899,
|
|
"bytes_processed" => 54554,
|
|
),
|
|
)
|
|
);
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<warning>
|
|
<para>
|
|
El almacenamiento en búfer de peticiones del servidor ha sido deshabilitado para que
|
|
esto funcione apropiadamente, si no, PHP podría ver la subida de ficheros una vez realizada
|
|
esta completamente. Los servidores como Nginx almacenan en búfer peticiones más grandes.
|
|
</para>
|
|
</warning>
|
|
|
|
</chapter>
|
|
|
|
<!-- 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
|
|
-->
|
|
|