Ejecutar comandos en background desde PHP

Estos ultimos días he estado muy activo programando varios proyectos, que si encuestas web, lectura de correos IMAP, envio de SMS, busqueda de areas de telefonos, en fin!, muchas cosas! :) , pero ahora necesito ejecutar un script desde PHP pero la cosa es que para aumentar la velocidad de la página es necesario lanzarlo background y así no entorpecer con el proceso de la página.

Yo se que en linux es simple, con el amperson & al final del comando y vualaaa!, pero por alguna extraña razón no jalaba en PHP, mediante las funciones exec(), shell_exec() ni system() y mucho menos con passthru().

La prueba que hice fue hacer un script que haga un ping ilimitado, digamos que se llama ping.php, entonces tenia:

lanzador.php

<br /> < ?<br /> echo 'ini';<br /> execute('php ping.php &#038;');<br /> echo 'fin';<br /> ?><br /> 

y probe con

<br /> < ?<br /> echo 'ini';<br /> execute('php ping.php &#038; > /dev/null');<br /> echo 'fin';<br /> ?><br /> 

Pero nada, por alguna extraña razón tardaba mucho tiempo (cosa que no deberia a no ser que sea una falla de mi php), y en mi archivo ping.php tenia esto:

<br /> < ?<br /> shell_exec('ping localhost');<br /> ?><br /> 

Pero como todo (casi todo) tiene una solución, encontre el comando perfecto para tal tarea!, se llama popen() con su respectivo pclose(), donde lo que hace es abrir apuntador de archivo de proceso (quien sabe que sea, pero funciona jejejeje).

Bueno, el comando quedaria así:

<br /> < ?<br /> echo 'inicio';<br /> $command = "php ping.php &#038; > /dev/null";<br /> $v = popen($command, 'w');<br /> pclose($v);<br /> echo 'fin';<br /> ?></p>
<p>

3 thoughts on “Ejecutar comandos en background desde PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *