He utilizado un script cron (escrito en PHP, no ejecutado desde el servidor web) para verificar que el servidor esté activo y reiniciar el servidor.
Sin embargo, no haría esto desde un proceso creado por el servidor, porque sabe que está a punto de matar el proceso principal, lo que tiene malas implicaciones para el niño.
El método más simple sería tener un archivo/tmp/RESTART_APACHE que PHP puede crear y que el script cron busca. Si el script cron ve el archivo/tmp/RESTART_APACHE, reinicia adecuadamente Apache.
El uso de un script cron introducirá un retraso (hasta 60 segundos si lo ejecuta cada minuto), pero aparte de eso debería funcionar como lo desee.
Dependiendo de cómo pretenda usar esto, eso puede hacer el truco.
(Es posible que desee utilizar un directorio diferente a/tmp/para establecer los permisos y prevenir cualquier persona en el servidor de ser capaz de crear el archivo.)
EDIT: Por favor, véase el comentario de Aaron H a este mensaje. Estoy de acuerdo con lo que dice: realmente debes tener cuidado de que la capacidad de reiniciar tu servidor web no sea un servicio generalmente disponible para el público.
Restrinja el acceso al sistema que puede desencadenar el reinicio; asegúrese de que el archivo que desencadena el reinicio tenga permisos restrictivos para que solo el proceso web pueda crear ese archivo y, en general, sea inteligente.
Es importante agregar que esta es una muy mala idea si el servicio (PHP) está disponible en el exterior ... Algo que reinicie sus servicios web solo debe ser utilizado por los administradores, de lo contrario, abre la puerta a un toda una serie de oportunidades para tener su servidor en peligro. –
¿No dijo cómo se haría exactamente este reinicio? qué código debe ejecutarse –
@Java PHP - si solo intenta volver a cargar la configuración, solo necesita ejecutar "apachectl graceful" (o "apache2ctl graceful") –