Como es por converción, todo tomamos a PHP como un simple lenguaje capaz de conectarse a una base de datos e imprimir variables en pantalla, pero esto es erroneo. PHP es un lenguaje mucho más extenso y acá hay un ejemplo irrefutable de ello: el servicio o tecnología web sockets.
Una de las funcionas predefinidas desde el lenguaje más popular (en el ámbito de los sockets) es la llamada fsockopen(), la cual abre una conexión mediante socket a un dominio especificado.
Ahora, la pregunta es: ¿para que sirven estos benditos sockets?; simple: permite a los servidores y navegadores web un canal para el flujo de datos ordenado, en el cual se envían peticiones y respuestas de lado a lado. Éstos dependerán explícitamente del protocolo de comunicaciones en el cual estén basados, por lo general se usa TCP, aunque puede variar. Entonces, el servidor espera a que el cliente le proponga una petición y el mismo le responde con los datos en cuestión; simple y conciso.
Acá mismo cito un ejemplo para ver como funciona. Recomiendo profundizar un poco en cuanto a las funciones básicas.
*fsockopen abre el canal de transmisión de datos desde el cliente al servidor, por el cual van y vuelven datos de lado a lado. Sus parametros son:
1) El dominio al cual se le presenta la petición;
2) El puerto. (por lo general es 80, aunque podría ser otro. De todas formas a tener cuidado con el puerto seleccionado);
3) Si hay un error, esta variable nos proporciona su número;
4) Si hay un error, esta misma nos proporciona su mensaje;
5) Tiempo límite de conexión, aunque no siempre es necesario, a veces optimiza los canales;
*fclose cierra la conexión.
<?php
$Datos = false;
$Url ='www.miurl.com';
$Fp = @fsockopen ( $Url, 80, $Error, $ErrorStr, 1 );
if ( $fp ) {
stream_set_timeout ( $Fp, 1 );
$Salida = "GET / HTTP/1.0\r\n";
$Salida .= "Host: www.miurl.com\r\n";
$Salida .= "Connection: Close\r\n\r\n";
if ( fwrite ( $Fp, $Salida ) ) {
$Contenido='';
$Cabeceras = false;
while ( ! ( feof ( $Fp ) ) ) {
$Datos = true;
$Linea = fgets ( $Fp,128 );
if ( $Linea == "\r\n" && $Cabeceras ) {
$Cabeceras = true;
}
if ( $Cabeceras ) {
$Contenido.= $Linea;
}
}
fclose ( $Fp );
}
}
if ( ! ( $Datos ) ) {
print "No hay permisos necesarios para obtener datos desde $Url";
}
else {
print "$Contenido";
}
?>
Entonces, se supone que esto servirá para aquellos que quieren ponerse al día de las nuevas inclusiones de PHP.
Notese que no hay que abusar de estas tecnologías; ya que a veces simplemente hay otras alternativas menos consumistas y eficientes que una sopa de letras y funciones con callBacks y detección de errores.
GroovieDev, compartiendo conocimiento. Con la tecnología de Blogger.