Existen muchas técnicas diferentes para buscar el cambio de una divisa en lenguaje PHP en otro servidor que no sea el tuyo (Por ejemplo : European Center Bank). Generalmente el cambio de las divisas del día lo dan servidores de Bancos, Instituciones Económicas, Prensa especializada en economía, Las Bolsas de todo el Mundo , los buscadores como yahoo, google y demás organizaciones que están especializados en Importación/Exportación de Divisas.
Para poder leer un fichero HTML en otro ordernador en PHP podemos utilizar la funcion : file_get_contents() y para poder leer un fichero en otro servidor en XML la funcion : simplexml_load_file()
Dichas funciones funcionan perfectamente si las utilizamos en programa PHP que sus máquinas son controladas por nuestro Dpto. Informático o en ordenadores locales con conexión a Internet.
Las técnicas que estamos utilizando para buscar el valor de divisa en los formatos ya explicados anteriormente, son muy factibles porque dichas organizaciones nos dejan dichos ficheros en sitios públicos, para que otras compañías puedan acceder a leer libremente dichos ficheros.
Pero la sorpresa es cuando una aplicación realizada en PHP la ejecutamos en un HOSTING, y vemos con sorpresa que dichas funciones nos dan error, porque el Servidor del Hosting no permite acceder a otros Ordenadores con dichas funciones para leer los ficheros que nosotros necesitamos en nuestra aplicación.
Para solucionar el problema existe una función : fsockopen() que nos puede ayudar a leer ficheros HTML y TXT, para poder leer ficheros de otros servidores sin que el HOSTING nos corte el acceso a las máquinas remotas que deseamos acceder.
La funcion fsockopen() abre una conexión de dominio Internet o Unix via sockets. su descripción es :
fsockopen() : Inicia una conexión de dominio Internet o Unix.
Para el domino Internet, abrirá una conexión TCP hacia el ordenador hostname en el puerto port.
Para el dominio Unix, hostname se usará como ruta al socket, port debe ser 0 para este caso, el parámetro opcional timeoutse puede usar para especificar un timeout en segundos para establecer la conexión.
fsockopen() devuelve un puntero a fichero, el cual se puede usar junto con las otras funciones de ficheros (como fgets(), fgetss(), fputs(), fclose(), feof()).
En el siguiente post realizaremos un programa con fsockopen() para extraer el cambio de la divisa desde un servidor.