Foros del Web » Programando para Internet » PHP »

ejecutar php por linea de comandos?

Estas en el tema de ejecutar php por linea de comandos? en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 25/08/2006, 01:48
Avatar de 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
  #2 (permalink)  
Antiguo 25/08/2006, 05:09
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
supongo que con cron

http://www.programacion.com/php/articulo/adr_phpcron/
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 25/08/2006, 05:13
Avatar de TCL_ZIP  
Fecha de Ingreso: noviembre-2003
Ubicación: Esporles, Mallorca, España
Mensajes: 690
Antigüedad: 20 años, 5 meses
Puntos: 4
Entonces esto que es un soft?
  #4 (permalink)  
Antiguo 25/08/2006, 07:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por TCL_ZIP Ver Mensaje
Entonces esto que es un soft?
Un "Cron job" de linux o "Programador de taréas" (windows) es una aplicación del Sistema Operativo de tu servidor . .el cual hace la "gracia" de llamar a intervalos de tiempos (los que tu configures) a otros progrmas, por ejemplo como es tu caso a tu scritp PHP (pero ejecutando PHP en línea de comandos como CLI: Command Line Interface), por eeso se usa "php" (el interprete) y luego como parámetro del interprete PHP(.exe o lo que sea) .. a tu script PHP .. Todo eso se configura en tu "cron Job" (si usas Linux): la llamada al "programa" a ejecutar y por otro lado defines en que intervalos se llamará.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 25/08/2006, 07:39
Avatar de TCL_ZIP  
Fecha de Ingreso: noviembre-2003
Ubicación: Esporles, Mallorca, España
Mensajes: 690
Antigüedad: 20 años, 5 meses
Puntos: 4
el problema es que yo no tengo linux :S
  #6 (permalink)  
Antiguo 25/08/2006, 07:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por TCL_ZIP Ver Mensaje
el problema es que yo no tengo linux :S
Pero ya te dije que Windows tiene su equivalente .. le llama "Programador de taréas" (y en otros S.O. tendrá sus equivalentes) .. el concepto es el mismo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.