Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

336
Vistas
Dos comandos se ejecutan correctamente de forma manual, pero fallan cuando se ejecutan en shell_exec (), lo que genera un error de tiempo de espera

Estoy tratando de ejecutar dos comandos dmd simultáneamente usando PHP shell_exec() . Un comando ejecuta Tshark durante 5 segundos. El segundo comando ejecuta un archivo .exe . Tshark es un programa que captura paquetes de red que se transfieren a través de una interfaz de red. El segundo programa (llamado mtu.exe) envía paquetes de red desde mi máquina local a una máquina remota.

La cosa es que cuando ejecuto estos comandos manualmente , ejecuto el primer comando. Un momento después de eso, ejecuto el segundo, y todo va bien y en aproximadamente un segundo, los paquetes esperados son transferidos por mtu.exe y son capturados por tshark.exe . Todo funciona perfectamente bien.

Pero luego, cuando ejecuto el siguiente script para ejecutar estos comandos, obtengo el siguiente resultado:

 $firstCommand = '"C:\Program Files\Wireshark\tshark.exe" -a duration:5 -w capture.pcapng 2>&1'; echo $firstCommand."<br><br>"; $secondCommand = "mtu.exe -d0 -a43020008 -g43010008 -i987654321 -s"Merry Xmass" 2>&1"; echo $secondCommand."<br><br>"; echo shell_exec($firstCommand . " && " . $secondCommand);

Producción:

 "C:\Program Files\Wireshark\tshark.exe" -a duration:5 -w capture.pcapng 2>&1 mtu.exe -d0 -a43020008 -g43010008 -i987654321 -s"Merry Xmass" 2>&1 Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\Test\index.php on line 10

La línea 10 es la línea donde shell_exec() . La pregunta ¿cómo solucionar este problema? ¿Por qué está pasando esto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Ejecute tshark en segundo plano con & para que el shell no espere a que finalice antes de ejecutar mtu . Luego use el comando de wait para esperar a que finalice el comando de fondo.

 echo shell_exec($firstCommand . " & " . $secondCommand . "; wait");

Esta es la sintaxis de shell de Unix, no sé si hay algo equivalente en Windows cmd.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda