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.

Posted in

Leave a Reply

GroovieDev, compartiendo conocimiento. Con la tecnología de Blogger.