Foros del Web » Programando para Internet » PHP »

Tarea automatica en php

Estas en el tema de Tarea automatica en php en el foro de PHP en Foros del Web. Buenas, hace unos dias cree un topic pidiendo ayuda con tareas programadas el caso es que ahora si necesito :/ la logica del progama es: ...
  #1 (permalink)  
Antiguo 11/04/2012, 08:39
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 3 meses
Puntos: 3
Tarea automatica en php

Buenas, hace unos dias cree un topic pidiendo ayuda con tareas programadas
el caso es que ahora si necesito :/
la logica del progama es:

Existen tareas que tienen que ser evaluadas por 2 personas, y dependiendo de su evaluacion se genera una evaluacion final

A - B - RESULT
1 - 1 - 1
1 - 0 - 0
0 - 1 - 0
0 - 0 - 0
null - 1 - 1
1 - null - 1
null - 0 - 0
0 - null - 0

A = Evaluador a
B = Evaluador b
Result = resultado de comparacion de evaluaciones


Tengo hecho codigo en donde el evaluador a va a calificar una tarea y el evaluador b califica la misma tarea y se hace el resultado final.






El problema radica en que puede haber uno de los dos usuarios que se le olvide o que drechamente no evalue la tarea, por lo que no tengo la 2º interaccion con el usuario

es por eso que cada noche, no se a las 23:59 , corra un script para preguntar si las tareas que estan en evaluaciones tienen las dos evaluaciones hechas o no
y en caso de que haya una que no tenga datos, la evalue solo con la que tenga datos
eso se haría, porque cada evaluador tiene 2 dias para evaluar la tarea como maximo, en caso de exceder ese tiempo quedaria como nula la evaluacion de esa tarea por parte de uno de los evaluadores



no se como hacer la tarea automatica



he buscado info pero ningun tutorial sale con manzanas para explicar a modo facil :/


ALGO DE CODIGO

Código PHP:

<?php
if (isset($_GET['task_status'])&& isset($_GET['task_id'])) {
    
    
$tasks_id     =     $_GET['task_id'];    
    
$status_pcg     =     $_GET['task_status'];
    
$hoy        =    date('Y-m-d H:i:s'time());
        
    
//PREGUNTA SI EXISTE O NO LA TAREA EN LA TABLA task_tmp PARA SU POSTERIOR INSERCIÓN O ACTUALIZACIÓN EN CASO DE QUE NO EXISTIERA
    
$query mysql_query(('SELECT task_id FROM task_tmp WHERE task_id = '$tasks_id),$dbh);
    
    if (
$array mysql_fetch_assoc($query)) {   
        
//ALGORITMO PARA CALIFICAR TAREA CON ESTADO FINAL...
        
        //OBTIENE ESTADO PROPORCIONADO POR EL RC PARA LA MISMA TAREA
        
$query2 mysql_query("SELECT task_tmp_rc FROM task_tmp WHERE task_id ='$tasks_id'");
        
$status_rc_tmp mysql_fetch_assoc($query2);
        
$status_rc $status_rc_tmp['task_tmp_rc'];
        
//OBTIENE FECHA TERMINO DE TAREA 
        
$q_tasks mysql_query ("SELECT task_end_date FROM tasks WHERE task_id = '$task_id'");
        
$date_task mysql_fetch_assoc($q_tasks);
        
$end_date $date_Task['task_end_date'];
        
//OBTIENE FECHA INGRESO DE ULTIMO LOG DE TAREA
        
$q_log mysql_query ("SELECT task_log_date FROM task_log WHERE task_log_task = '$task_id' 
                                ORDER BY(task_log_date) DESC"
);
        
$row_log mysql_fetch_assoc($q_log);
        
$fecha_log $row_log['task_log_date'];
        
        
//echo $row['task_log_date']; //ultima fecha de log de la tarea de id task_id

        
        //CALIFICACION DE TAREAS
        
if($status_pcg == 'aceptado_pcg' && $status_rc == 'aceptado_rc'){
            
//ESTABLECIMIENTO DEL ESTADO FINAL
            
if($end_date >= $fecha_log){
                echo
"TERMINÓ LA TAREA EN EL TIEMPO CORRECTO";
                
//$rf = ; // TERMINÓ LA TAREA EN EL TIEMPO CORRECTO
            
}else{
                echo
"TERMINÓ LA TAREA ATRASADA";
                
//$rf = ; // TERMINÓ LA TAREA ATRASADA
            
}
        }
            
            
        else if(
$status_pcg == 'rechazado_rc' || $status_rc == 'rechazado_pcg'){ 
            
//ESTABLECIMIENTO DEL ESTADO FINAL RECHAZADO
            
if($end_date >= $fecha_log){
                
//$rf = ; // TAREA RECHAZADA EN TIEMPO CORRECTO (PROGRESO?)
            
}else{
                
//$rf = ; // TAREA RECHAZADA EN TIEMPO ATRASADO (PROGRESO, ATRASADO?)
            
}
        }

        
//ACTUALIZA DATOS DE pcg EN task_tmp
        
$actualizacion "    UPDATE task_tmp SET 
                            task_tmp_pcg        =    '$status_pcg',
                            task_tmp_pcgdate     =     '$hoy',
                            task_tmp_result     =     '$rf'
                            WHERE task_id ='$tasks_id'"
;
                            
        
mysql_query($actualizacion$dbh) or die ("problema con query2");  
        echo    
"Actualización Correcta";
    } 
    else{
        
// INSERTA DATOS DE LA EVALUACIÓN DE pcg EN task_tmp
        
$insercion "    INSERT INTO task_tmp     (task_id, task_tmp_pcg, task_tmp_pcgdate) 
                        VALUES                    ('$tasks_id','$status_pcg','$hoy')"
;
                    
        
mysql_query($insercion$dbh) or die ("problema con query");
        
        echo    
"Inserción Correcta";
   }
}
?>


















gracias de ante mano
  #2 (permalink)  
Antiguo 11/04/2012, 13:02
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 4 meses
Puntos: 3
Respuesta: Tarea automatica en php

Necesitas que ese script se ejecute cada x tiempo??? No entiendo...

Si lo que necesitas es que se ejecute cada x tiempo utiliza CRON.

Es muy facil de usar.
  #3 (permalink)  
Antiguo 11/04/2012, 13:17
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: Tarea automatica en php

Si utilizas Linux, busca sobre cron como te indica nomakon.

Si utilizas windows crea una tarea programada que ejecute un bat.
con el siguiente contenido.

c:/php/php.exe c:/php_a_ejecutar.php
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #4 (permalink)  
Antiguo 13/04/2012, 15:24
Avatar de el_java  
Fecha de Ingreso: enero-2008
Mensajes: 185
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: Tarea automatica en php

No utilizo Linux
:)
  #5 (permalink)  
Antiguo 13/04/2012, 15:36
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Tarea automatica en php

Cita:
Iniciado por el_java Ver Mensaje
No utilizo Linux
:)
si ya te dieron las dos opciones escoge la que si cumple tu requerimiento.
  #6 (permalink)  
Antiguo 13/04/2012, 16:40
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años
Puntos: 22
Respuesta: Tarea automatica en php

Hola,
Para el tema de CRON, hay servicios web gratuitos qe proporcionan la ejecución de un archivo remoto cada cierto tiempo. No recuerdo ninguno de estos servicios pero sé que existen pero varios clientes mios los han utilizado para hostings que no permitían CRON.

Saludos
__________________
Compartir es vivir
www.programador-php.com

Etiquetas: mysql, tabla, tarea, usuarios, automatico
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:23.