Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/08/2006, 01:48
Avatar de TCL_ZIP
TCL_ZIP
 
Fecha de Ingreso: noviembre-2003
Ubicación: Esporles, Mallorca, España
Mensajes: 690
Antigüedad: 20 años, 5 meses
Puntos: 4
ejecutar php por linea de comandos?

Tengo el siguiente codigo que me han dicho que lo tengo k ejecutar por linea de comandos, alguien sabe k es eso y como se hace? necesito linux para hacerlo? gracias por adelantado.

Código PHP:
<?php

return; // Para evitar que lo ejecuteis online, que os conozco :P

// El script indexa el rectangulo formado por las casillas diametralmente opuestas <x1, y1> y <x2, y2>

if ($argc != 7){
    print(
"Uso: php $argv[0] <cookie> <x1> <y1> <x2> <y2> <servidor>\n");
    exit();
}

require_once(
"include/conf.php");
require_once(
'include/db_mysql.php');

// No se hasta que punto realiza comprobaciones el servidor, por ello es conveniente sustituir este
// User Agent por el mismo que el del navegador con el que se inicio sesion
// Por ese mismo motivo es aconsejable que se realice desde la misma IP
$user_agent "Opera/9.00 (X11; Linux i686; U; en)";

// Teoricamente, sustituyendo en el fichero karte.php por karte2.php y el tamanyo_cuadrante por 13, deberia
// indizar mas rapido, siempre que se disponga de Plus, claro.
$referer "http://$servidor/karte.php";
$tamanyo_cuadrante 7;
$centro_cuadrante floor($tamanyo_cuadrante 2);
$servidor $argv[6];

$distribuciones = array(
    array (
3339),
    array (
3456),
    array (
4446),
    array (
4536),
    array (
5346),
    array (
11115)
);

$db = new DB_Sql();
$db->db_connect($db_url);

// La cookie es el valor de la cookie con nombre T3E que proporciona el servidor al hacer login. Es como un identificador 
// univoco de sesion. Si se consigue secuestrar ese valor de otro usuario, se puede acceder a su cuenta
$cookie $argv[1];
$x = array($argv[2], $argv[4]);
$y = array($argv[3], $argv[5]);
sort($x); sort($y);

$pasos_x ceil((abs($x[0] - $x[1]) + 1) / $tamanyo_cuadrante);
$pasos_y ceil((abs($y[0] - $y[1]) + 1) / $tamanyo_cuadrante);
$pasos_x = ($pasos_x == $pasos_x);
$pasos_y = ($pasos_y == $pasos_y);

for (
$i 0$i $pasos_x$i++){
    for (
$j 0$j $pasos_y$j++){
        
$id xy2id(    $x[0] + ($i $tamanyo_cuadrante) + $centro_cuadrante
                
$y[0] + ($j $tamanyo_cuadrante) + $centro_cuadrante);
        
procesar_mapa($id);
        
sleep(1);
    }
}

function 
get($url){
    global 
$cookie;
    global 
$servidor;
    global 
$user_agent;
    global 
$referer;

    
$opts = array(
            
'http' => array(
                
'method' => 'GET',
                
'header' => "Host: $servidor\r\n".
                
"User-Agent: $user_agent\r\n".
                
"Referer: $referer\r\n".
                
"Cookie: T3E=$cookie\r\n".
                
"Cookie2: \$Version=1\r\n"
                
)
             );
    
$contextResource stream_context_create($opts);
    
$handle fopen($url'r'false$contextResource);
    
$contents '';
    if(
$handle){
        while (!
feof($handle)) {
            
$contents .= fread($handle8192);
        }
        
fclose($handle);
    }
    return 
$contents;
}

function 
procesar_mapa($id){
    global 
$servidor;
    print(
"Mapa ($id) => (".id2x($id).", ".id2y($id).")\n");
    
    
$contents get("http://$servidor/karte.php?z=$id");

    
// <img class="mt\d+" src="img/es/m/([^\d]*)(\d*).gif">
    
preg_match_all('/<img class="mt\\d+" src="img\/un\/m\/([^\\d]*)(\\d+).gif">/i'$contents$tipos);
    
// tipos[1][i] = Tipo de casilla (t, d, o)
    // tipos[2][i] = Variedad del tipo de casilla

    // <area[^?]*\?d=(\d*)"[^>]*>
    
preg_match_all('/<area[^?]*\\?d=(\\d*)"[^>]*>/i'$contents$direcciones);
    
// direcciones[1][i] = ID de casilla

    
for($i 0$i sizeof($tipos[1]); $i++){
        
$id_casilla $direcciones[1][$i];
        switch(
$tipos[1][$i]){
            case 
"t"procesar_casilla($id_casilla); break; // Casilla despoblada
            
case "d"procesar_casilla($id_casilla); break; // Casilla poblada
            
case "o": switch($tipos[2][$i]){
                    case 
1:
                    case 
2insertar_info($id_casilla, array(1000)); break; // Leña
                    
case 3insertar_info($id_casilla, array(1001)); break; // Mixto Leña-Cereal 
                    
case 4:
                    case 
5insertar_info($id_casilla, array(0100)); break; // Barro
                    
case 6insertar_info($id_casilla, array(0101)); break; // Mixto Barro-Cereal
                    
case 7:
                    case 
8insertar_info($id_casilla, array(0010)); break; // Hierro
                    
case 9insertar_info($id_casilla, array(0011)); break; // Mixto Hierro-Cereal
                    
case 10:
                    case 
11insertar_info($id_casilla, array(0002)); break; // Mixto Cereal-Agua
                    
case 12insertar_info($id_casilla, array(0001)); break; // Cereal
                
} break;
        }
    }
}

function 
procesar_casilla($id){
    global 
$distribuciones;
    global 
$servidor;

    print(
"Casilla ($id) => (".id2x($id).", ".id2y($id).")\n");

    
$contents get("http://$servidor/karte.php?d=$id");

    
// <img src="img/un/g/f(\d+).jpg"[^>]*>
    
preg_match_all('/<img src="img\/un\/g\/f(\\d+).jpg"[^>]*>/i'$contents$dist);
    
// dist[1][0] Distribucion de los recursos

    
insertar_info($id$distribuciones[$dist[1][0] - 1]);
    
sleep(1);
}

function 
insertar_info($id$recursos){
    global 
$db;
    global 
$servidor;
    global 
$servers;

    
$db->db_query("INSERT IGNORE INTO ".$servers[$servidor]."_r (id, madera, barro, hierro, cereal) VALUES 
            ($id, '$recursos[0]','$recursos[1]','$recursos[2]','$recursos[3]')"
);
}

// Funcion que calcula el ID a partir de las coordenadas X e Y
function xy2id($x$y){ return + ($x 400) + (801 abs($y 400)); }

// Funcion que calcula la coordenada X a partir del ID
function id2x($id){ return (($id 1) % 801 400); }

// Funcion que calcula la coordenada Y a partir del ID
function id2y($id){ return (400 - (int)(($id 1) / 801)); }

// Normaliza una coordenada para la forma especial del mundo
function norm_coord($c){
        if (
$c 400) return ($c 801);
        if (
$c < -400) return ($c 801);
        return 
$c;
}

// Calcula el ID de una casilla desplazada
function id_desp($id$x$y){ return xy2id(norm_coord(id2x($id) + $x), norm_coord(id2y($id) + $y)); }

?>
Cita:
1.Ejecucion desde linea de comandos
2.Ejemplo: "php casillas.php valorcookie -248 166 -242 160 s1.travian.net" indizaria el rectangulo de 7x7 formado por los extremos (-248, 166) y (-242, 160) en el servidor s1.travian.net