Foros del Web » Programando para Internet » PHP »

Manejar cron con codigo php

Estas en el tema de Manejar cron con codigo php en el foro de PHP en Foros del Web. hola bueno me gustaria saber si es posible y como controlar el cron utilizando codigo php desde mi panel de administracion....
  #1 (permalink)  
Antiguo 31/10/2005, 09:14
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Manejar cron con codigo php

hola bueno me gustaria saber si es posible y como controlar el cron utilizando codigo php desde mi panel de administracion.
  #2 (permalink)  
Antiguo 31/10/2005, 09:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usas algún panel de control tipo cPanel o similar para administrar tu sitio? .. o tienes dominio total sobre tu servidor? .. (asumimos que usas Linux como S.O. del servidor por qué haces referencia a "Cron Job").

Un saludo,
  #3 (permalink)  
Antiguo 31/10/2005, 09:30
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
hola, bueno si tengo control total sobre el servidor, pero lo que quiero espesifica mente es crear una pagina php donde mi cliente pueda programar las tareas espesificas sin tener que ingresar al cron job del cpanel.
  #4 (permalink)  
Antiguo 31/10/2005, 09:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero insisto (o mejor dicho .. confirma) ..

Tu que dispones en tu servidor (usas un servicio de hosting? ..) .. tienes instalado un panel de control de adminitración del sitio con cPanel (www.cpanel.com) o equivalente?

O usas un servidor dedicado tuyo?

Todo esto es para decidir que método necesitas usar .. Por qué .. por ejemplo en un servicio de hosting común .. no puedes usar un exec() por ejemplo para configurar directamente un Cron Job (que sería lo más "limpio") ... En esos casos, lo que se suele hacer es "atacar" al script (CGI/etc) de cPanel (o panel de control equivalente) desde PHP .. es decir, tu creas tu interface -> proceso PHP y de ahí al script de cPanel que corresponda (con su autentificación por médio necesaria).

Un saludo,
  #5 (permalink)  
Antiguo 31/10/2005, 10:03
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Ya, Uso un servidor de hosting, en el cual esta instalado el cpanel.

Tambien tengo acceso a la cuenta del Reseller que utiliza:

WHM 10.8.0

Cpanel 10.8.1-R15

Fedora i686

m...???

Bueno saludos...
  #6 (permalink)  
Antiguo 31/10/2005, 11:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. Entonces, .. se trata de que te conectes al script que haga tu proceso en cPanel .. realmente no sé cual será en tu caso concreto, pero .. tienes un ejemplo (con respecto a la autentificación necesaria) en este ejemplo (que es para crear sub-dominios ..pero se basa en la misma filosofía)

http://www.forosdelweb.com/f18/subdominios-desde-php-279720/

Un saludo,
  #7 (permalink)  
Antiguo 31/10/2005, 15:33
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Vale, te pasaste tambien estaba pensando en hacer subdominios, ya lo e probado y funciona gracias ...

Los bimos
  #8 (permalink)  
Antiguo 31/10/2005, 18:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si probastes el tema de la creación de los "Cron Job" . no estaría de más que aportases tu solución al tema.

Un saludo,
  #9 (permalink)  
Antiguo 01/11/2005, 11:35
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Pense que funcionaba pero me equivoque .
Este es el problema:

fputs($fp, "POST $path HTTP/1.1\r\n");

Si no mne equivoco esta linea esta compuesta por 3 parametros:
1-. POST
2-. $path
3-. HTTP/1.1

El problema es que $path = GET http://www.miweb.com/archivo.php > /dev/null

si remplasamos la variable quedaria haci:

fputs($fp, "POST GET http://www.miweb.com/archivo.php > /dev/null HTTP/1.1\r\n");

y los parametros serian:
1-. POST
2-. GET
3-. http://www.miweb.com/archivo.php
4-. >
5-. /dev/null
6-. HTTP/1.1

Y el cron solo esta tomando el parametro GET.
Variable $path solo podria tomar valores sin espacios.
Pero el cron no funciona poniendo:

GEThttp://www.miweb.com/archivo.php>/dev/null

:-p
  #10 (permalink)  
Antiguo 01/11/2005, 12:55
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Holas de nuevo, luego de una larga batalla pude solucionar el problema, la clave era poner %20.
Por que %20 pues me acorde de las url que pasaba por GET y tenian espacios y casi siempre salia %20, haci que prove y funciono .

GET%20http://www.miweb.com/archivo.php%20>%20/dev/null

Bueno ahora ordeno un poco el codigo y aporto con mi solicion...

PD: De las mil y un soluciones que pruevo la mas estupida es la correcta y siempre es la ultima que se me ocurre
  #11 (permalink)  
Antiguo 06/11/2005, 18:45
Avatar de kurorix  
Fecha de Ingreso: junio-2005
Ubicación: Maipu - Santiago - Chile
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Lo prometido es deuda. ...
Código PHP:
<?php 
ini_set
('display_errors'1); 
$host "dominio.com"// domain name 
$port 2082//cpanel port (always 2082) 
$path "/frontend/x/cron/editcron.html?mailto=xxx"// url del cron. 
// $DOCUMENT_ROOT;

//Vemos el registro del cron.
/*
Bueno, creamos un registro del cron ya que cuando se ingresaba un nuevo registro, se borraba el o los anteriores registros existentes, de esta forma ingresamos todos los registros que ya existian nuevamente.
*/
include('config.php');
$result mysql_db_query($db,"SELECT * FROM cron");
$entcont mysql_num_rows($result);
$i 1;
while(
$row mysql_fetch_array($result))
{
// $i-minute, $i-hour..., En mi caso, estas variables reciben los parametros necesario.
    
$path .= "&$i-minute=".$row['minute'];
    
$path .= "&$i-hour=".$row['hour'];
    
$path .= "&$i-day=".$row['day'];
    
$path .= "&$i-month=".$row['month'];
    
$path .= "&$i-weekday=".$row['weekday'];
    
$path .= "&$i-command=".$row['command'];
    
$i++;
}

//Agregamos el nuevo registro.
$command $_POST['command']; //Ej: $command = "GET%20http://www.$host/archivo.php%20>%20/dev/null";
//No olbidar %20 para los espacios.
if($_POST[command] <> ''){
    
$path .= "&entcount=$entcont";
    
$path .= "&0-minute=".$minute $_POST['minute'];
    
$path .= "&0-hour=".$hour $_POST['hour'];
    
$path .= "&0-day=".$day $_POST['day'];
    
$path .= "&0-month=".$month $_POST['month'];
    
$path .= "&0-weekday=".$weekday $_POST['weekday'];
    
$path .= "&0-command=".$command;

//Agregamos el nuevo registro.
    
mysql_db_query($db,"INSERT INTO cron(minute, hour, day, month, weekday, command) VALUES ('$minute', '$hour', '$day', '$month', '$weekday', '$command')");
    echo 
mysql_error();
}

// cpanel login info 
$cpaneluser "*****"
$cpanelpass "++++++"
$authstr "$cpaneluser:$cpanelpass"
//**************************** 

// Set auth str 
$pass base64_encode($authstr); 

$fp fsockopen($host$port$errno$errstr$timeout 30); 

if(!
$fp){ 
// error tell us 
echo "$errstr ($errno)\n"

}else{ 

// server request 

fputs($fp"POST $path HTTP/1.1\r\n"); 
fputs($fp"Host: $host\r\n"); 
fputs($fp"Authorization: Basic $pass \r\n"); 
fputs($fp"Content-type: application/x-www-form-urlencoded\r\n"); 
fputs($fp"Content-length: ".strlen($poststring)."\r\n");
fputs($fp"Connection: close\r\n\r\n"); 
fputs($fp$poststring "\r\n\r\n"); 

while(!
feof($fp)) { fgets($fp4096); } 
//close fp - we are done with it 
fclose($fp); 

print 
"Programacion Exitosa."
?>
Bueno eso seria todo, espero que les sirva...
  #12 (permalink)  
Antiguo 07/11/2005, 05:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Para el tema de los espacios en el URL .. puedes usar la función:

rawurlencode()
www.php.net/rawurlencode

La aplicas a tu "$command" y listo .. no tendrás que poner eseos %20 a mano.

Un saludo,
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 19:37.