Buscar de forma automática el cambio de la divisa en PHP en otro servidor (II)
Escrito por: Telepieza en PHP
E-mail
En el apartado (buscar de Forma automática el cambio de Divisa (I) , nos quedamos en la instrucció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()).
Voy a colgar el programa en PHP que está funcionando desde hace muchos meses sin dar ningún tipo de error para localizar el cambio de divisa desde un Hosting con la instrucción fsockopen()
El programa php currency_class.php es una clase y la he llamado currency_class.php, ire comentando casi todas las instrucciones para su mejor comprensión.
PROGRAMA REALIZADO PARA PHP LLAMADO CURRENCY_CLASS.PHP SIENDO LA CLASE Currency.
<?php
/**
* @version $Id: currency_class.php
* @package mvmphp
* @copyright Copyright (C) 2009
* @comment Clase Currency (Buscar Valor de la Divisa)
*/
class Currency {
// Por defecto para toCurr es USD = Dólares y fromCurr es EUR = Euros
public $toCurr = ‘USD’;
public $fromCurr = ‘EUR’;
// Constructor de la Clase, si los parametros a pasar son diferentes de null, pasamos los valores a las variables de la clase
function __construct($p_curr=null, $p_from=null) {
if ($p_curr != null ) $this->toCurr = $p_curr;
if ($p_from != null) $this->fromCurr = $p_from;
$this->toAmount = 1; // Valor es siempre 1
}
/**
* Busca mediante la tecnica del Socker del puerto 80 en google el valor de la divisa
* Si es correcto devuelve una página para después localizar el cambio de la divisa
*/
function getCurrencyGoogle() {
$host = ‘www.google.com’;
$page = ‘/search?&q=’.$this->toAmount.’+’.$this->toCurr.’+in+’.$this->fromCurr;
$file_info = ”; $get_info = false; $returnHtml = array(); $t_d=”;
# Open Socker (Google) y search con las dos divisas con valor 1
if ($fsock = @fsockopen($host, $port=80, $errno, $errstr, $timeout=15))
{
# Pagina y valores a buscar en el servidor
@fputs($fsock, “GET $page HTTP/1.1\r\n”);
# DNS o IP del Host
@fputs($fsock, “HOST: $host\r\n”);
# Tipo de Conexion y cierre
@fputs($fsock, “Connection: close\r\n\r\n”);
while (!@feof($fsock))
{
# A partir de la Segunda Lectura grabamos la informacion en $file_info para su posterior tratamiento
if ($get_info) $file_info .= @fread($fsock, 1024);
else
{
# Por primera vez eliminamos la cabecera y controlamos errores de conexion
$line = @fgets($fsock, 1024);
if ($line == “\r\n”) $get_info = true;
else if (stripos($line, ‘404 not found’) !== false)
{
$errstr = ‘FILE_NOT_FOUND’ . ‘: ‘ . $host . $page;
error_log_event(‘ Currency 01-Error : ‘,$errstr );
return false;
}
}
}
@fclose($fsock);
}
else
{
if ($errstr) { $errstr = utf8_convert_message($errstr);
error_log_event(‘ Currency 02-Error : ‘,$errstr );
return false; }
else { $errstr = ‘FSOCK_DISABLED’;
error_log_event(‘ Currency 03-Error : ‘,$errstr );
return false; }
}

Entradas (RSS)