Foros del Web » Programando para Internet » PHP »

Script php auto ejecutable

Estas en el tema de Script php auto ejecutable en el foro de PHP en Foros del Web. Hola , a ver si alguien puede echarme un cable con la siguiente duda!! Utilizo un script escrito en php para acutalizar la base de ...
  #1 (permalink)  
Antiguo 31/05/2013, 04:07
 
Fecha de Ingreso: mayo-2013
Mensajes: 1
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Script php auto ejecutable

Hola , a ver si alguien puede echarme un cable con la siguiente duda!!

Utilizo un script escrito en php para acutalizar la base de datos de una tienda fisica con la de una tienda online.

Pero para llevar a cabo la actualización tengo que ejectuar el script de la siguiente manera www.dominio.com/script.php

No hay ninguna manera de que se auto ejecute el script 2 veces al dia ??
añadiendole alugna linea de código, la verdad que de php no tengo ni idea
dejo el codigo del script por si de paso a alguien le hiciera falta, pero lo ideal seria que lo hiciera solo 2 veces al dia y así tener el stock actualizado de manera totalmente automatica ,

Muchas gracias de antemano y espero que alguien me ayude!!!


<?php

// este php necesita en entrada un fichero update.csv con 4 campos
// Referencia producto; Precio Mayorista (costo); Stock; Precio de venta sin iva (PVP)
// los numero en formado ingles (ej 2.55)
// el programa funciona así:
// lee el fichero y accede a la base de datos con la REFERENCIA del producto y recupera la ID del producto
// actualiza stock, precio mayorista, precio de venta sin iva.


$dir = opendir('.'); //$dir = opendir('./updater');
echo "Conectamos a la bb.dd." . '<br>'; flush();
mysql_connect("dirección servidor", "xxxxxxx_bbdd", "password") or die(mysql_error());
mysql_select_db("nombre database") or die(mysql_error());

// Como la primera fila son los nombres de las columnas:
$fila = 1;
// Tenemos que actualizar en dos tablas:
$update_table = "ps_product inner join ps_stock_available on (ps_product.id_product =

ps_stock_available.id_product)";
//antes que nada, stock de todo a 0 para no tener descatalogados con stock:
mysql_query ("UPDATE $update_table SET ps_stock_available.quantity=0");
echo "Abrimos el fichero." . '<br>'; flush();
$handle = fopen("update.csv", "r");
$falta = fopen("falta.txt", "w");
echo "Recorremos el CSV..." . '<br>'; flush();
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
$num = count($data);
echo "<p>" . '<br>'; flush();
echo "( $fila )" . '<br>'; flush();
$fila++;
for ($c=0; $c < $num; $c++) {
if ($c = 1) { //Referencia producto
$reference = $data[($c - 1)];

$row = mysql_query("SELECT * FROM ps_product WHERE reference='$reference'") or die (mysql_error()); //
$existe = mysql_num_rows($row); //


if ($existe == 0) {fwrite ($falta, "La referencia $reference no existe en bb.dd." . PHP_EOL);} //

echo $reference . " - Referencia Producto" . '<br>'; flush();
$buscaid = mysql_query("SELECT id_product FROM ps_product WHERE reference='$reference'") or

die (mysql_error()); //
$id_product = mysql_result($buscaid, 0);
echo $id_product . " - Referencia Producto" . '<br>'; flush();
}

if ($c = 2) { //precio de compra
$compra = $data[($c - 1)];
mysql_query("UPDATE $update_table SET wholesale_price='$compra' WHERE reference='$reference'")
or die(mysql_error());
echo $compra . " - Coste actualizado tabla ps:_product" . '<br>'; flush();

mysql_query("UPDATE ps_product_shop SET wholesale_price='$compra' WHERE

id_product='$id_product'")
or die(mysql_error());
echo $compra . " - Coste actualizado tabla ps:_product_shop" . '<br>'; flush();
}

if ($c = 3) { //Precio PVP
$price = $data[($c - 1)];
mysql_query("UPDATE $update_table SET price='$price' WHERE reference='$reference'")
or die(mysql_error());
echo $price . " - PVP tabla ps_product actualizado" . '<br>'; flush();
mysql_query("UPDATE ps_product_shop SET price='$price' WHERE id_product='$id_product'")
or die(mysql_error());
echo $price . " - PVP tabla ps_product.shop actualizado" . '<br>'; flush();
}

if ($c = 4) { //Stock
$quantity = $data[($c - 1)];
mysql_query("UPDATE $update_table SET ps_stock_available.quantity='$quantity' WHERE

reference='$reference'")
or die(mysql_error());
echo $quantity . " - stock actualizado" . '<br>'; flush();
}


echo "_________________________________________________ ____<p>";
}
}
fclose($handle);
fclose($falta);
//mandamos el archivo por mail
# Leer el contenido del archivo
$archivo = file_get_contents("falta.txt");
# De quien
$nombre_from = 'Nombre de quien envia'; $email_from = "[email protected]";
# Para quien
$email_to = "[email protected]";
# Asunto
$asunto = "Articulos faltantes";
# Encabezado del E-mail
$header = "From: ".$nombre_from." <".$email_from.">\r\n";
# Envio del email
$ok = mail($email_to,$asunto,$archivo,$header);
# Si el email se envío, se imprime...
echo ($ok) ? "Enviado..." : "Falló el envío";

echo " <p>" . '<br>'; flush();
echo " - - - ACTUALIZACION COMPLETADA - - - <p>" . '<br>'; flush();
//Borro los archivos viejos para no tener problema al renombrar o descargar
//unlink('update.csv');

echo "Archivos temporales eliminados" . '<br>'; flush();
echo "Todo hecho" . '<br>'; flush();
?>
  #2 (permalink)  
Antiguo 31/05/2013, 19:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Script php auto ejecutable

Bienvenido a FDW.

Si en tu hosting tienes CPanel, busca "Cron Jobs", ahí puedes programar que se ejecute tu script cada determinado tiempo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 01/06/2013, 10:59
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Script php auto ejecutable

Yo solo quisiera hacer una observación. Si el script se debe actualizar entre la tienda fisica y la virtual puede que con que se actualice dos veces al día este bien pero si por ejemplo en un día poco habitual un producto se vende muy rapido y se agota en la tienda virtual no se veria este cambio sino hasta el final de la tarde y la gente trataria de comprar un producto que se encuentra agotado (si ya se que es un poco paranoico, pero es una posibilidad real)

Mi sugerencia es que si desde la tienda fisica se pudiera actualizar los productos disponibles cada vez que se hace una venta seria lo optimo. De lo contrario la idea de triby es mas que valida y sencilla.
__________________
Blog de humor http://elcuasatar.net63.net/

Etiquetas: auto, ejecutable, mysql, select, sql, tabla
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 17:47.