Página 1 de 1

Ejecutar un script que ya está en ejecución

NotaPublicado: 2011-09-11 11:56 @539
por danimera
Mi pregunta es por que tengo un script que tiene que consultar vía API web, más de setenta mil registros...

Éste hace unos procesos a base de datos, etc, etc...

Pero mi script tarda 3 horas aproximadamente en arrojarme el resultado por cada siete mil registros...

Mi pregunta es... ¿Podré ejecutar ese script de nuevo si no ha terminado el primer bloque de siete mil registros para leer los nuevos registros?

La idea es que el admin programara cada cierto tiempo que el script busque X registros por medio de la API cada cierto tiempo.

No sé cómo podría disminuir el tiempo tampoco; usando el WWW::Mechanize ya optimicé lo que más pude...

Re: Ejecutar un script que ya está en ejecución

NotaPublicado: 2011-09-11 13:17 @595
por explorer
danimera escribiste:Mi pregunta es por que tengo un script que tiene que consultar vía API web, más de setenta mil registros...

Éste hace unos procesos a base de datos, etc, etc...

Pero mi script tarda 3 horas aproximadamente en arrojarme el resultado por cada siete mil registros...
No sé cómo lees esos siete mil registros, ni el procesamiento que realizas con ellos, pero a mi parece excesivo ese tiempo de tres horas... ¿Los pides uno a uno? ¿No se pueden pedir en bloques?

danimera escribiste:Mi pregunta es... ¿Podré ejecutar ese script de nuevo si no ha terminado el primer bloque de siete mil registros para leer los nuevos registros?
Yo creo que sí, siempre y cuando la segunda ejecución tenga presente que puede estar existiendo una ejecución anterior. Quiero decir: el programa puede realizar todas las operaciones que quiera, siempre y cuando sus cálculos no se refieran a información que todavía no ha sido almacenada o procesada por la ejecución anterior (que aún no ha terminado). Si, en cambio, con los nuevos siete mil registros, necesito realizar alguna operación que tenga en cuenta que los anteriores siete mil registros han sido almacenados o procesados, pues no puedo hacerlo, porque no lo están.

danimera escribiste:No sé cómo podría disminuir el tiempo tampoco; usando el WWW::Mechanize ya optimicé lo que más pude...
Si el cuello de botella no es tu programa, entonces será del servidor que te da la información... Sin más detalles, poco más se puede decir :(

Re: Ejecutar un script que ya está en ejecución

NotaPublicado: 2011-09-11 14:21 @640
por danimera
No sé cómo lees esos siete mil registros, ni el procesamiento que realizas con ellos, pero a mi parece excesivo ese tiempo de tres horas... ¿Los pides uno a uno? ¿No se pueden pedir en bloques?


Es un foreach() de un listado de Links; leo el link con el Mechanize, obtengo un código, se lo paso al API que me regresa un JSON que guardo en una tabla; el ciclo recorre más o menos siete mil links...

Yo creo que sí, siempre y cuando la segunda ejecución tenga presente que puede estar existiendo una ejecución anterior. Quiero decir: el programa puede realizar todas las operaciones que quiera, siempre y cuando sus cálculos no se refieran a información que todavía no ha sido almacenada o procesada por la ejecución anterior (que aún no ha terminado). Si, en cambio, con los nuevos siete mil registros, necesito realizar alguna operación que tenga en cuenta que los anteriores siete mil registros han sido almacenados o procesados, pues no puedo hacerlo, porque no lo están.


Solo recogerá información y la guardará. La pregunta radica en que este script ejecutará una búsqueda de la información según la configuración del admin. Ejemplo: buscar registro con un valor mayor a tal número, buscar registros de tal localidad, etc... Y como se ejecutará desde un cron, es posible que se ejecute el script y luego otro pero el anterior no habrá finalizado... son como 20 de estos que se ejecutarán en X horario.

Si el cuello de botella no es tu programa, entonces será del servidor que te da la información... Sin más detalles, poco más se puede decir


Debido a que es un webservice creo, bueno, un API para cada ciclo; él recoge la información, imagino que es lo mismo que hacerlo con un navegador, es algo como leer https://api.pagina.com/items/ID:500... La idea general es como un webspider o crawler, digamos.

Re: Ejecutar un script que ya está en ejecución

NotaPublicado: 2011-09-11 20:21 @889
por explorer
Entonces, la respuesta es sí.

;)