Las secuencias (streams) fueron introducidas con PHP 4.3.0 como
un medio de generalizar el acceso a archivos, recursos de red,
compresión de datos, y otras operaciones que comparten un
juego común de funciones y usos. En su forma más
simple, una secuencia es un objeto
recurso que exhibe un comportamiento
secuenciable. Esto quiere decir, pueden leerse datos desde la
secuencia o escribir datos hacia ella en una forma lineal, y
puede que sea posible efectuar búsquedas con
fseek() de ubicaciones arbitrarias dentro de
la secuencia.
Un contexto es un conjunto
de parámetros
y opciones especÃficas de cada
envoltura que modifican o mejoran el comportamiento de una
secuencia. Los contextos son creados
usando stream_context_create() y pueden ser
pasados a la mayorÃa de funciones de creación de
secuencias relacionadas con el sistema de archivos (esto
es, fopen(),
file(), file_get_contents(),
etc...).
Es posible registrar envolturas diseñadas por el usuario
mediante stream_wrapper_register(), use la
definición de clase expuesta en su respectiva
página del manual.
La clase php_user_filter se encuentra
predefinida y es una clase base abstracta para su uso con filtros
definidos por el usuario. Vea la página del manual
sobre stream_filter_register() para más
detalles sobre la implementación de filtros definidos por
el usuario.
Estas constantes están
definidas por esta extensión y estarán disponibles
solamente cuando la extensión ha sido o bien compilada dentro
de PHP o grabada dinámicamente en tiempo de ejecución.
Esta constante es equivalente a
STREAM_FILTER_READ |
STREAM_FILTER_WRITE.
PSFS_PASS_ON *
Código de Retorno que indica que el
filtro de espacio de usuario devolvió paquetes en
$salida.
PSFS_FEED_ME *
Código de Retorno que indica que el
filtro de espacio de usuario no devolvió paquetes en
$salida (lo que quiere decir que no hay
datos disponibles).
PSFS_ERR_FATAL *
Código de Retorno que indica que el
filtro de espacio de usuario encontró un error
irrecuperable (esto quiere decir, se recibieron datos
inválidos).
STREAM_USE_PATH
Bandera que indica si la
secuencia usó la ruta de
inclusión.
STREAM_REPORT_ERRORS
Bandera que indica si la
envoltura es responsable de generar errores
usando trigger_error() durante la apertura
de la secuencia. Si esta bandera no está definida, usted
no deberÃa generar errores.
STREAM_CLIENT_ASYNC_CONNECT *
Abrir el socket de cliente asincrónicamente. Esta
opción debe ser usada junto con la bandera
STREAM_CLIENT_CONNECT. Constante usada con
stream_socket_client().
STREAM_CLIENT_CONNECT *
Abrir una conexión de socket cliente. Los sockets
cliente deberÃan incluir siempre esta bandera. Constante
usada con stream_socket_client().
STREAM_CLIENT_PERSISTENT *
El socket de cliente abierto con
stream_socket_client() debe permanecer
persistente entre cargas de la página.
Le dice a una secuencia creada con
stream_socket_server() y enlazada usando la
bandera STREAM_SERVER_BIND que comience a
escuchar en el socket. Los transportes orientados a conexiones
(como TCP) deben usar esta bandera, de lo contrario el socket
de servidor no será habilitado. Usar esta bandera con
transportes sin conexión (como UDP) es un error.
Se ha establecido una conexión con un recurso externo.
STREAM_NOTIFY_AUTH_REQUIRED
Se requiere de autorización adicional para acceder al
recurso especificado. TÃpicamente se emite con un nivel
de severidad de
STREAM_NOTIFY_SEVERITY_ERR.
Condición de error no-crÃtico. El procesamiento
puede continuar.
STREAM_NOTIFY_SEVERITY_ERR
Un error crÃtico ha ocurrido. El procesamiento no puede
continuar.
STREAM_IPPROTO_ICMP +
Ofrece un socket ICMP.
STREAM_IPPROTO_IP +
Ofrece un socket IP.
STREAM_IPPROTO_RAW +
Ofrece un socket RAW.
STREAM_IPPROTO_TCP +
Ofrece un socket TCP.
STREAM_IPPROTO_UDP +
Ofrece un socket UDP.
STREAM_PF_INET +
Protocolo de Internet Versión 4 (IPv4).
STREAM_PF_INET6 +
Protocolo de Internet Versión 6 (IPv6).
STREAM_PF_UNIX +
Protocolos internos de sistema Unix.
STREAM_SOCK_DGRAM +
Ofrece datagramas, que son mensajes sin conexión (UDP,
por ejemplo).
STREAM_SOCK_RAW +
Ofrece un socket puro, lo cual provee accesso a protocolos de
red e interfaces internas. Por lo general, este tipo de sockets
sólo están disponibles para el usuario
administrador (root).
STREAM_SOCK_RDM +
Ofrece un socket RDM (mensajes entregados confiablemente).
STREAM_SOCK_SEQPACKET +
Ofrece un socket de secuencia de paquetes secuenciados.
STREAM_SOCK_STREAM +
Ofrece secuencias de bytes en doble-vÃa con un mecanismo
de transmisión para datos fuera-de-banda (TCP, por
ejemplo).
Nota:
Las constantes marcadas con * se encuentran
disponibles únicamente a partir de PHP 5.0.0.
Nota:
Las constantes marcadas con + están
disponibles desde PHP 5.1.0 y están diseñadas para
ser usadas con stream_socket_pair(). Por favor
note que algunas de estas constantes pueden no estar disponibles en
su sistema.
Ejemplo 1. Uso de file_get_contents() para
recuperar datos de múltiples fuentes
<?php /* Leer archivo local desde /home/bar */ $archivo_local = file_get_contents("/home/bar/foo.txt");
/* Identico al ejemplo anterior, indicando explicitamente el esquema FILE */ $archivo_local = file_get_contents("file:///home/bar/foo.txt");
/* Leer un archivo remoto desde www.example.com usando HTTP */ $archivo_http = file_get_contents("http://www.example.com/foo.txt");
/* Leer un archivo remoto desde www.example.com usando HTTPS */ $archivo_https = file_get_contents("https://www.example.com/foo.txt");
/* Leer un archivo remoto desde ftp.example.com usando FTP */ $archivo_ftp = file_get_contents("ftp://usuario:contrasenya@ftp.example.com/foo.txt");
/* Leer un archivo remoto desde ftp.example.com usando FTPS */ $archivo_ftps = file_get_contents("ftps://usuario:contrasenya@ftp.example.com/foo.txt"); ?>
Ejemplo 2. Realizar una petición POST a un servidor
https
<?php /* Enviar una peticion POST a https://seguro.example.com/formulario.php * Incluir elementos de formulario llamados "foo" y "bar" con valores * de prueba */
$cuerpo = ""; while (!feof($sock)) $cuerpo .= fgets($sock, 4096);
fclose($sock); ?>
Ejemplo 3. Escritura de datos a un archivo comprimido
<?php /* Crear un archivo comprimido que contenga una cadena arbitraria * El archivo puede ser leido de vuelta usando una secuencia * compress.zlib o simplemente descomprimido desde la linea de comandos * usando 'gzip -d foo-bar.txt.gz' */ $da = fopen("compress.zlib://foo-bar.txt.gz", "wb"); if (!$da) die("No fue posible crear el archivo.");
stream_select -- Ejecuta el equivalente al llamado de sistema select()
en la matriz de secuencias dada, con un tiempo de espera
especificado por tv_sec y tv_usec
stream_set_blocking -- Establecer modo de bloqueo/no-bloqueo sobre una
secuencia
Atención técnica y comercial: (54)-11-5031-1111 las 24 hs. los 365 días del año. ToWebs, (c) 2008
Virtucom Networks S.A Av. Belgrano 1586, piso 10 (C1093AAQ) Cap. Fed. Bs. As, Argentina.