1
0
mirror of https://github.com/php/doc-es.git synced 2026-04-23 15:18:07 +02:00
Files
archived-doc-es/reference/stream/functions/stream-notification-callback.xml
Philippe DELENTE 9f7804a633 Feature/update revision en misc page reference (#248)
* feat(translation): update revision EN

* feat(translation): update revision EN
2025-07-02 22:37:23 +02:00

301 lines
9.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 561e36d646b8e48dc53a910234ee9f30cba147d0 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.stream-notification-callback" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>stream_notification_callback</refname>
<refpurpose>Una función de retrollamada para el parámetro de contexto <literal>notification</literal></refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>void</type><methodname><replaceable>stream_notification_callback</replaceable></methodname>
<methodparam><type>int</type><parameter>notification_code</parameter></methodparam>
<methodparam><type>int</type><parameter>severity</parameter></methodparam>
<methodparam><type class="union"><type>string</type><type>null</type></type><parameter>message</parameter></methodparam>
<methodparam><type>int</type><parameter>message_code</parameter></methodparam>
<methodparam><type>int</type><parameter>bytes_transferred</parameter></methodparam>
<methodparam><type>int</type><parameter>bytes_max</parameter></methodparam>
</methodsynopsis>
<para>
Una función de retrollamada de tipo <type>callable</type>, utilizada por el
<link linkend="context.params.notification">parámetro de contexto notification</link>,
llamada durante un evento.
</para>
<note>
<para>
Esto <emphasis>no</emphasis> es una función real, únicamente un prototipo de
cómo debe ser la función.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>notification_code</parameter></term>
<listitem>
<para>
Una de las constantes de notificación <constant>STREAM_NOTIFY_<replaceable>*</replaceable></constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>severity</parameter></term>
<listitem>
<para>
Una de las constantes de notificación <constant>STREAM_NOTIFY_SEVERITY_<replaceable>*</replaceable></constant>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>message</parameter></term>
<listitem>
<para>
Pasado si un mensaje descriptivo está disponible para este evento.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>message_code</parameter></term>
<listitem>
<para>
Pasado si un código de mensaje descriptivo está disponible para este evento.
</para>
<para>
El significado de este valor depende del gestor específico utilizado.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>bytes_transferred</parameter></term>
<listitem>
<para>
Si es posible, <parameter>bytes_transferred</parameter> será rellenado.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>bytes_max</parameter></term>
<listitem>
<para>
Si es posible, <parameter>bytes_max</parameter> será rellenado.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.3.0</entry>
<entry>
Soporte para <constant>STREAM_NOTIFY_COMPLETED</constant> implementado,
las versiones anteriores de PHP nunca desencadenaban esta notificación.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example xml:id="stream-notification-callback.example.basic"><!-- {{{ -->
<title>Ejemplo con <function>stream_notification_callback</function></title>
<programlisting role="php">
<![CDATA[
<?php
function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
switch($notification_code) {
case STREAM_NOTIFY_RESOLVE:
case STREAM_NOTIFY_AUTH_REQUIRED:
case STREAM_NOTIFY_COMPLETED:
case STREAM_NOTIFY_FAILURE:
case STREAM_NOTIFY_AUTH_RESULT:
var_dump($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max);
/* Ignorar */
break;
case STREAM_NOTIFY_REDIRECTED:
echo "Redirección a: ", $message;
break;
case STREAM_NOTIFY_CONNECT:
echo "Conectado...";
break;
case STREAM_NOTIFY_FILE_SIZE_IS:
echo "Obteniendo el tamaño del fichero: ", $bytes_max;
break;
case STREAM_NOTIFY_MIME_TYPE_IS:
echo "Tipo mime encontrado: ", $message;
break;
case STREAM_NOTIFY_PROGRESS:
echo "Descargando, ya ", $bytes_transferred, " bytes transferidos";
break;
}
echo "\n";
}
$ctx = stream_context_create();
stream_context_set_params($ctx, array("notification" => "stream_notification_callback"));
file_get_contents("http://php.net/contact", false, $ctx);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Conectado...
Tipo mime encontrado: text/html; charset=utf-8
Redirección a: http://no.php.net/contact
Conectado...
Obteniendo el tamaño del fichero: 0
Tipo mime encontrado: text/html; charset=utf-8
Redirección a: http://no.php.net/contact.php
Conectado...
Obteniendo el tamaño del fichero: 4589
Tipo mime encontrado: text/html;charset=utf-8
Descargando, ya 0 bytes transferidos
Descargando, ya 0 bytes transferidos
Descargando, ya 0 bytes transferidos
Descargando, ya 1440 bytes transferidos
Descargando, ya 2880 bytes transferidos
Descargando, ya 4320 bytes transferidos
Descargando, ya 5760 bytes transferidos
Descargando, ya 6381 bytes transferidos
Descargando, ya 7002 bytes transferidos
]]>
</screen>
</example>
</para>
<para>
<example xml:id="stream-notification-callback.example.download">
<title>Barra de progreso simple para un cliente de descarga en línea de comandos</title>
<programlisting role="php">
<![CDATA[
<?php
function usage($argv) {
echo "Uso:\n";
printf("\tphp %s <http://example.com/file> <localfile>\n", $argv[0]);
exit(1);
}
function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
static $filesize = null;
switch($notification_code) {
case STREAM_NOTIFY_RESOLVE:
case STREAM_NOTIFY_AUTH_REQUIRED:
case STREAM_NOTIFY_COMPLETED:
case STREAM_NOTIFY_FAILURE:
case STREAM_NOTIFY_AUTH_RESULT:
/* Ignorar */
break;
case STREAM_NOTIFY_REDIRECTED:
echo "Redirección a: ", $message, "\n";
break;
case STREAM_NOTIFY_CONNECT:
echo "Conectado...\n";
break;
case STREAM_NOTIFY_FILE_SIZE_IS:
$filesize = $bytes_max;
echo "Tamaño del fichero: ", $filesize, "\n";
break;
case STREAM_NOTIFY_MIME_TYPE_IS:
echo "Tipo Mime: ", $message, "\n";
break;
case STREAM_NOTIFY_PROGRESS:
if ($bytes_transferred > 0) {
if (!isset($filesize)) {
printf("\rTamaño del fichero desconocido.. %2d kb hechos..", $bytes_transferred/1024);
} else {
$length = (int) (($bytes_transferred/$filesize)*100);
printf("\r[%-100s] %d%% (%2d/%2d kb)", str_repeat("=", $length). ">", $length, ($bytes_transferred/1024), $filesize/1024);
}
}
break;
}
}
isset($argv[1], $argv[2]) or usage($argv);
$ctx = stream_context_create();
stream_context_set_params($ctx, array("notification" => "stream_notification_callback"));
$fp = fopen($argv[1], "r", false, $ctx);
if (is_resource($fp) && file_put_contents($argv[2], $fp)) {
echo "\n¡Hecho!\n";
exit(0);
}
$err = error_get_last();
echo "\n¡Error!\n", $err["message"], "\n";
exit(1);
?>
]]>
</programlisting>
<para>
Ejecute el ejemplo anterior con:
<literal>php -n fetch.php
http://no2.php.net/get/php-5-LATEST.tar.bz2/from/this/mirror
php-latest.tar.bz2</literal> mostrará algo similar a:
</para>
<screen>
<![CDATA[
Conectado...
Tipo Mime: text/html; charset=utf-8
Redirección a: http://no2.php.net/distributions/php-5.2.5.tar.bz2
Conectado...
Tamaño del fichero: 7773024
Tipo Mime: application/octet-stream
[========================================> ] 40% (3076/7590 kb)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><xref linkend="context.params" /></member>
</simplelist>
</para>
</refsect1>
</refentry>