He creado un raspador php/mysql, que está funcionando bien, y no tengo idea de cómo ejecutarlo más eficientemente como un trabajo cron.¿Cuánto tiempo puede funcionar un trabajo de cron de PHP para/lo estoy haciendo bien?
Hay 300 sitios, cada uno con entre 20 y 200 páginas raspadas. Se necesitan entre 4 y 7 horas para raspar todos los sitios (dependiendo de la latencia de la red y otros factores). El raspador necesita hacer una carrera completa una vez al día.
¿Debo ejecutar esto como 1 trabajo cron que se ejecuta durante las 4 a 7 horas completas, o ejecutarlo cada hora 7 veces, o ejecutarlo cada 10 minutos hasta que se complete?
El guión está configurado para ejecutarse desde el cron como esto:
while($starttime+600 > time()){
do_scrape();
}
la que se ejecutará la función do_scrape(), que raspa 10 URL a la vez, hasta que (en este caso) 600 segundos tiene pasado. El do_scrape puede tardar entre 5 y 60 segundos en ejecutarse.
Pregunto aquí, ya que no puedo encontrar información en la web sobre cómo ejecutar esto, y soy cauteloso acerca de cómo hacerlo funcionar diariamente, ya que php isnt realmente diseñado para ejecutarse como un solo script durante 7 horas.
Lo escribí en vainilla PHP/mysql, y se está ejecutando en VFA debian reducido con solo lighttpd/mysql/php5 instalado. Lo he ejecutado con un tiempo de espera de 6000 segundos (100 minutos) sin ningún problema (el servidor no se cayó).
Se agradece cualquier consejo sobre cómo realizar esta tarea. ¿Qué debería estar cuidando, etc.? o ¿voy a ejecutar todo esto mal?
Gracias!
Saludos por la respuesta. Como la cantidad de postprocesamiento es mínima (~ 150ms por ~ 2-5 solicitud de segunda página) decidimos seguir con una estructura monolítica en lugar de una secuencia de comandos de curling y una secuencia de comandos de procesamiento. Estamos usando multi-curl para obtener las 10 URL a la vez, por lo que es semi-multiproceso, aunque no es ideal. Python sería ideal, pero se trataba de ir con lo que sabemos (php) para hacer el trabajo rápidamente. Gracias! – Rob