Pregunta

Estoy construyendo una araña que recorrer varios sitios y minería de datos ellos.

Desde que necesita para obtener cada página por separado, esto podría llevar mucho tiempo (tal vez 100 páginas). Ya he puesto el set_time_limit a ser de 2 minutos por página, pero parece que Apache va a matar el guión después de 5 minutos no importa.

Esto no suele ser un problema ya que este se extenderá desde cron o algo similar que no tenga este límite de tiempo. Sin embargo también me gustaría que los administradores para ser capaz de iniciar una zona de alcance de forma manual a través de una interfaz HTTP.

No es importante que Apache se mantiene viva durante toda la duración, soy, va a utilizar AJAX para activar una extracción y comprobar de nuevo de vez en cuando con AJAX.

Mi problema es cómo iniciar el obtenerlo desde dentro de un script PHP sin la operación fetch por concluida cuando el guión llamándolo muere.

Tal vez podría utilizar el sistema ( 'script.php &'), pero no estoy seguro de que va a hacer el truco. ¿Alguna otra idea?

¿Fue útil?

Solución

    $cmd = "php myscript.php $params > /dev/null 2>/dev/null &";

    # when we call this particular command, the rest of the script 
    # will keep executing, not waiting for a response
    shell_exec($cmd);

Lo que esto hace es envía todos los stdout y stderr a / dev / null, y su guión mantiene al tanto de ejecución. Incluso si el guión 'padre' termina antes myscript.php, myscript.php se termine de ejecutarse.

Otros consejos

si no desea utilizar Exec puede utilizar un php construido en función de!

ignore_user_abort(true);

esto le dirá el guión para reanudar incluso si se interrumpe la conexión entre el navegador y el servidor;)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top