2011-09-30 11 views
7

Tengo un script PHP que ejecutamos cada pocos minutos a través de una entrada de cron, y de vez en cuando (aproximadamente una vez por semana) en lugar de terminar normalmente, sigue funcionando, consumiendo el 100% de un núcleo de CPU (estoy asumiendo, bucle infinito)¿Es posible adjuntar un depurador a un proceso PHP en ejecución?

Al ver el código y "pensar" al respecto, no puedo encontrar ninguna razón para que esto suceda, pero lo hace. Hasta ahora, cuando obtengo 3 o más de esos los mato, y eso resuelve el problema de la CPU, pero me gustaría hacer algo al respecto ...

¿Hay alguna forma de volcar un proceso o adjuntarlo? para ello con un depurador para que pueda saber algo, todo lo que está haciendo? (La línea de PHP en la que se encuentra sería de gran ayuda). No me importa si el proceso muere cuando lo descargue, o cualquier cosa.

Esta es una secuencia de comandos PHP, que se ejecuta desde la línea de comandos, en una máquina CentOS 5.6, y soy un gran novato cuando se trata de * nix, así que si me puede indicar algún tutorial para tontos que ser impresionante.

Gracias! Daniel

+1

Sí, es: http://dirac.org/linux/gdb/06-Debugging_A_Running_Process.php (pero puede que este no sea el depurador que está buscando). – hakre

Respuesta

3

No hay forma de que sepa que adjuntar un depurador a un proceso de PHP que no se ha preparado específicamente con una extensión de depuración de PHP (como xdebug). Sin embargo, es posible que adivine qué está pasando con la utilidad de uso más general strace, que puede proporcionar un seguimiento de las llamadas al sistema que ejecuta un proceso. Esto solo le dirá qué llamadas al sistema se están ejecutando, pero esto puede ser suficiente (dependiendo del contexto) para determinar qué está pasando de todos modos.

Cuestiones relacionadas