我有一个使用exec()运行命令行脚本的页面 此脚本对Apaches配置进行更改,添加新文档根和虚拟主机等。此脚本完全按照我的意愿工作。
我需要重新启动Apache以使更改生效。但是,如果我从正在运行的脚本或通过php执行此操作,它可以工作,但是当Apache重新启动时,我从php页面得不到反馈。
我尝试过使用重新加载但是这样做会停止当前运行的PHP脚本。 无论如何将配置更改合并到Apache而不影响任何当前运行的脚本?
我正在使用以下命令从PHP脚本重新加载Apache:
exec('sudo /Web/apache_reload', $res);
apache_reload包含:
/sbin/chkconfig apache2 > /dev/null
/etc/init.d/apache2 restart > /dev/null
由于
答案 0 :(得分:2)
您可以尝试使用/etc/init.d/apache2 reload
,它会重新加载配置文件而不会删除apache。
但是,有更清洁的解决方案。
您可以创建一个空文件,即/tmp/reload_apache
,而不是实际重新启动apache。
然后你有一个脚本每分钟通过cron运行,检查这个文件是否存在,如果是,它将重启apache并删除文件。
唯一的缺点是你可能需要等待60秒直到apache重启。