Foros del Web » Programando para Internet » PHP »

Ejecutar scripts concurrentes?

Estas en el tema de Ejecutar scripts concurrentes? en el foro de PHP en Foros del Web. Hola que tal! No se si es posible hacer lo que quiero. He buscado en el foro pero no veo nada. De seo ejecutar x ...
  #1 (permalink)  
Antiguo 21/08/2008, 16:38
Avatar de farruko  
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta Ejecutar scripts concurrentes?

Hola que tal!

No se si es posible hacer lo que quiero. He buscado en el foro pero no veo nada.

De seo ejecutar x scripts de forma concurrente, es decir ejecutar desde una página en php, por ejemplo index.php varios scripts, por ejemplo script1.php, script2.php, etc.

Con el include se ejecutan de forma secuencial, tengo que esperar que se ejecute uno para que empiece el otro.

No se si se puede hacer o no o si tendré problemas al acceder a la base de datos de forma secuencial.

Gracias por vuestros consejos
  #2 (permalink)  
Antiguo 21/08/2008, 16:45
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ejecutar scripts concurrentes?

Puedes hacer un cronjob que ejecute los scripts cada cierto tiempo.
O sino puedes meter los scripts en una funcion, y llamar dicha funcion en X pagina de tu sitio, por ejemplo el index
  #3 (permalink)  
Antiguo 21/08/2008, 16:56
Avatar de farruko  
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ejecutar scripts concurrentes?

Hola Ronruby

Super agradecido por tu pronta respuesta

Pero ¿si lo meto cada script en una función y luego llamo a cada función desde el index por ejemplo se me ejecuta en paralelo?
o bien tiene que esperar a que acabe una función para pasar a la siguiente?
  #4 (permalink)  
Antiguo 21/08/2008, 17:02
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: Ejecutar scripts concurrentes?

Pues segun entiendo la pregunta es si, son secuenciales, a que se debe que requieras que se corran en paralelo??
a la mente me viene una forma para correr en paralelo pero es desde el area del cliente (con ajax)
  #5 (permalink)  
Antiguo 21/08/2008, 17:05
Avatar de farruko  
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ejecutar scripts concurrentes?

Tengo que ejecutarlos en paralelo por que cada script hace consulta telnet a un servidor distinto, y necesito que se hagan a la misma vez para ahorra tiempo. Las consultas me duran 15 minutos en cada servidor y se me puede hacer interminable la recogida de datos.

Si los lanzo todos a la vez lo tendría todo en 15 minutillos
  #6 (permalink)  
Antiguo 21/08/2008, 21:58
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ejecutar scripts concurrentes?

Talvez los tengas todos en 15 minutos. Pero no siempre asi.
Por ejemplo las descargas. 3 descargas que toman 15 minutos cada una te tomaria 45minutos. Pero bajarlos todas a la vez no lo haria mas rapido. Tomaria los mismos 45minutos.

Depende el script que vallas a correr.

Pero si metes todo en una funcion, pues sera secuencial.

Otra cosa es ... cada consulta al servidor te toma 15 minutos? O_O Que demonios estas consultando?
  #7 (permalink)  
Antiguo 21/08/2008, 22:59
 
Fecha de Ingreso: agosto-2008
Mensajes: 45
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ejecutar scripts concurrentes?

Hola, yo tube un problema parecido al tuyo, y tiene mucha lógica lo que querés hacer, pero primero aclaremos algunas cosas.

Si un script PHP dura "demasiado" tiempo (cada servidor tiene su concepto de "demasiado") este será abortado, y te puedo asegurar que 45' es demasiado (para mi 15' también es demasiado).

En primera instancia no existe forma, en PHP, de ejecutar dos, o más, rutinas en paralelos, hacer lo que los programadores llamamos hilos (threads); pero existe una clase que "simula" este comportamiento.
Lo que hace es llamar varias veces al programa php (php.exe en Windows, o el /bin/php según corresponda) y le pasa como parámetro la clase/función que querés ejecutar. Entonces vos vas a tener varias instancias del programa PHP corriendo en el servidor, y en cada instancia vas a tener una sola función ejecutándose.

Si te interesa buscala en google que aparece enseguida, buscá algo como multi threads en PHP. Yo no la he probado, miré el código y no me inspiró mucha confianza.

Yo lo resolví haciendo un CGI en C++ (que tiene un hermoso manejo de hilos), lo ejecuto cuando se necesite y listo (en mi caso cada 15''); este es uno de los casos en los que no cambio un CGI por PHP.

Suerte, matías.-
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 04:30.