[Rendimiento] ejecucion de un script por mucho tiempo !???

Iniciado por Diabliyo, 19 Marzo 2012, 02:49 AM

0 Miembros y 2 Visitantes están viendo este tema.

Diabliyo

Buenas.

Tengo un servidor el cual realiza ciertas tareas y hasta ahorita todo marcha bien... El detalle es que estoy por implementar una nueva actividad, por lo cual requiero que mi servidor ejecute algo durante 12 horas, pero no es una ejecucion constante del archivo (que este procesando), sino que de esas 12 horas, va a ejecutarse digamos 1 minutos y va a dormir 11 minutos, despues ejecuta otra vez 1 minutos y dormir 11 minutos, al completarse 6 horas (la mitad) dormira por 30 minutos (1 hora), y se volve a ejecutar una tarea de 1 minutos y dormir 11 minutos, etc, etc.... finalizara a las 12 horas de ejecucion.

Tengo el codigo en dos lenguajes, en PHP y en C, en ambos para dormir uso "sleep()", el detalle es que, nose si esto vaya a afectar a mi servidor, ya que este mismo server me sirve de DNS y HTTP.... ya que no tengo un segundo server que haga esta tarea.

Ya sea el code en PHP o C, estos se piensan invocar automaticamente a la misma hora usando CRON y el modo de ejecucion a realizar es:

# usando el code PHP
shell# php /root/public_html/tareas.php usuario clave mi_tarea

# o bien usando el code en C
shell# /root/public_html/mitarea -u usuario -p clave -d mi_tarea


Actualmente mi server atiende aproximadamente 2,500 visitas mensuales.

Ustedes que opinan ?

NOTA: ya se como hacerlo, solo quiero su recomendacion si el proceso se ejecuta tanto tiempo, consumira mi server ?

Saludos !

mokoMonster

"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

Diabliyo

Cita de: mokoMonster en 19 Marzo 2012, 06:39 AM
Por que no usas mejor las Tareas Programadas?

??? no te entiendo, porfavor explicate mas... es dificil para mi bola magica leer la realidad del mensaje xD :D

Pablo Videla

Cita de: Diabliyo en 19 Marzo 2012, 13:36 PM
??? no te entiendo, porfavor explicate mas... es dificil para mi bola magica leer la realidad del mensaje xD :D

crontab, busca sobre eso, puede que te ayude

Diabliyo

Cita de: DonVidela en 19 Marzo 2012, 14:30 PM
crontab, busca sobre eso, puede que te ayude

Ya se que es crontab, y se como usarlo, la pregunta va sobre recomendacion...

Lee bien mi post porfavor, no busco me digan como hacer las cosas, sino su opinion sobre si lo hago, se consumira mucho el server ?

Saludos !

mokoMonster

#5
Cita de: Diabliyo en 19 Marzo 2012, 14:32 PM
Ya se que es crontab, y se como usarlo, la pregunta va sobre recomendacion...

Lee bien mi post porfavor, no busco me digan como hacer las cosas, sino su opinion sobre si lo hago, se consumira mucho el server ?

Saludos !

Claro que se consumiría el server, eso dejando a un lado en donde lo ejecutarías, es decir, si tienes tu propio server que obviamente tiene que estar up las 24hrs ps no le veo mucho problema pero intenta dejar un programa corriendo por 12 hrs seguidas haciendo sleep varias veces y ve la memoria que esta ocupando la tarea, vamos tío, con CronJobs te ahorarrias muchas cosas, solo tendrías que hacer que se ejecute el programa de 1 minuto cada determinado tiempo y te ahorras el sleep y tanta cagada... Y si sabes bien sobre CronJobs sabes que aparte de que puedes poner diferentes tareas hasta cada minuto y no hay ningún problema ya que tiene un muy buen manejo de recursos (a menos de que quieras hacer el tuyo xD).

Mas claro: mi recomendación -> UsaCronJobs(!!);

Salduos!
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange

~ Yoya ~

Supongo que si o por lo menos memoria. Recuerda que PHP librera memoria automáticamente al finalizar el script, una opción también es comenzar a liberar memoria antes de entrar al sleep.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Diabliyo

#7
Cita de: ~ Yoya ~ en 20 Marzo 2012, 00:50 AM
Supongo que si o por lo menos memoria. Recuerda que PHP librera memoria automáticamente al finalizar el script, una opción también es comenzar a liberar memoria antes de entrar al sleep.

Esa si no me la sabia, me darias mas info de esto ?
Crees que seria el mismo problema si corriese el script de C ?

Cita de: mokoMonster en 19 Marzo 2012, 16:57 PM
Claro que se consumiría el server, eso dejando a un lado en donde lo ejecutarías, es decir, si tienes tu propio server que obviamente tiene que estar up las 24hrs ps no le veo mucho problema pero intenta dejar un programa corriendo por 12 hrs seguidas haciendo sleep varias veces y ve la memoria que esta ocupando la tarea, vamos tío, con CronJobs te ahorarrias muchas cosas, solo tendrías que hacer que se ejecute el programa de 1 minuto cada determinado tiempo y te ahorras el sleep y tanta cagada... Y si sabes bien sobre CronJobs sabes que aparte de que puedes poner diferentes tareas hasta cada minuto y no hay ningún problema ya que tiene un muy buen manejo de recursos (a menos de que quieras hacer el tuyo xD).

Mas claro: mi recomendación -> UsaCronJobs(!!);

Salduos!

Usaria cronjobs el detalle es que el programa en PHP o C (lo tengo en ambos lenguajes), consulta de la BDD y segun el numero de tareas, realiza un calculo asi como:

Código (php) [Seleccionar]
$cons= consultar( "NOTIFICACIONES" ); # obtiene todas las notificaciones
$cont= mysql_num_rows($cons); # numero de notificaciones del dia a realizar
$horas= 6; # en solo 6 horas deben salir todas las notificaciones
$rango= (($horas*60)*60)/($cont); # tiempo de espera (en segundos) entre cada notificacion

while( $buf=mysql_fetch_array($cons) )
         {
         enviar_notificacion_por_socket( $buf );
         sleep($rango); # dormir
         }


Podrian opinar que envie todas las notificaciones de palmo, pero no puedo, tengo que hacerlo paulatinamente !

Como ven es impredecible el numero de notificaciones que el sistema tendria que hacer, igual y es solo 1, o bien podrian ser 100 (o mas)...

Les repito, el codigo lo tengo en C y PHP, si corro el script con cron, veo que muchos opinan que el script en PHP consumira ram, pero... si fuese en C, creen que seria mejor ? o seria lo mismo ?

Que me recomiendan ?

~ Yoya ~

pues eliminando variables, arrays, recursos, etc... Asi liberas memoria.

Quizas muestro un PoC pero de momento no tengo mi fedora para probar y paso de hacerlo en window.

Igual, si lo tienes en c y php, yo elejiria C...

saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

mokoMonster

Cita de: Diabliyo en 21 Marzo 2012, 01:12 AM
Esa si no me la sabia, me darias mas info de esto ?
Crees que seria el mismo problema si corriese el script de C ?

Usaria cronjobs el detalle es que el programa en PHP o C (lo tengo en ambos lenguajes), consulta de la BDD y segun el numero de tareas, realiza un calculo asi como:

Código (php) [Seleccionar]
$cons= consultar( "NOTIFICACIONES" ); # obtiene todas las notificaciones
$cont= mysql_num_rows($cons); # numero de notificaciones del dia a realizar
$horas= 6; # en solo 6 horas deben salir todas las notificaciones
$rango= (($horas*60)*60)/($cont); # tiempo de espera (en segundos) entre cada notificacion

while( $buf=mysql_fetch_array($cons) )
         {
         enviar_notificacion_por_socket( $buf );
         sleep($rango); # dormir
         }


Podrian opinar que envie todas las notificaciones de palmo, pero no puedo, tengo que hacerlo paulatinamente !

Como ven es impredecible el numero de notificaciones que el sistema tendria que hacer, igual y es solo 1, o bien podrian ser 100 (o mas)...

Les repito, el codigo lo tengo en C y PHP, si corro el script con cron, veo que muchos opinan que el script en PHP consumira ram, pero... si fuese en C, creen que seria mejor ? o seria lo mismo ?

Que me recomiendan ?

Y que pasa cuando acaba con la primera "notificacion"? Si sigue con la segunda o se queda en sleep?
"Se necesitaron unos instantes para cortarle la cabeza, pero se necesitara un siglo para producir otra igual."
Lagrange