On Mon, Nov 30, 2015 at 05:52:41PM +0000, Camaleón wrote: > El Mon, 30 Nov 2015 14:09:00 -0300, Mauro Antivero escribió: > > > Estimados, tengo un script en PHP que realiza consultas SNMP a muchos > > dispositivos y guarda los resultados en una DB MySQL. Una "ronda" > > completa tarda aprox. 1 hora en correr. Esto en si por ahora no es un > > problema pero me gustaría saber como puedo hacer para lanzar múltiples > > consultas en paralelo (yo después vería como adaptar el script para que > > cada uno consulte equipos distintos, sin pisarse digamos) para que > > corran claro está al mismo tiempo. > > > > El script de momento lo ejecuto mediante CRON cada una hora. Yo puedo > > ejecutar más de una vez el mismo script (por supuesto, me falta ver como > > hacer para que cada uno de los scripts consulte equipos distintos, > > supongo que lo haré pasándole parámetros al script), pero como hago para > > hacer uso de los distintos CPUs del servior? En este caso el CPU es un > > Xeon E3 1270. Es necesario hacer algo o ya el sistema se encarga de > > asignar un núcleo a cada ejecución del script (creería que no). > > Según la documentación, no parece que SNMP sea muy amigo de las consultas > asíncronas: > > Multi-tasking > http://www.net-snmp.org/wiki/index.php/Agent_Architecture#Multi-tasking > > Is Net-SNMP thread safe? > http://www.net-snmp.org/docs/FAQ.html#Is_Net_SNMP_thread_safe_ > > Pero sí he encontrado una biblioteca (para Python) que parece que > gestiona este tipo de peticiones, quizá haya algo similar para PHP: > > http://pysnmp.sourceforge.net/
En Perl5, Net::SNMP permite realizar consultas en modo non-blocking: http://search.cpan.org/~dtown/Net-SNMP-v6.0.1/lib/Net/SNMP.pm#Non-blocking_Objects http://search.cpan.org/~dtown/Net-SNMP-v6.0.1/lib/Net/SNMP.pm#3._Non-blocking_SNMPv2c_get-bulk-request_for_ifTable http://search.cpan.org/~dtown/Net-SNMP-v6.0.1/lib/Net/SNMP.pm#4._Non-blocking_SNMPv1_get-request_and_set-request_on_multiple_hosts Saludos. -- Pablo Jiménez

