как программно перезапустить WAMP или Apache? - PullRequest
7 голосов
/ 05 октября 2011

В рамках некоторых сценариев автоматического развертывания + тестирования, которые я использую для проверки программирования, выполняемого для сайта, у меня есть несколько сценариев, которые обновляют файлы конфигурации Apache. Я хочу программно перезапустить WAMP, чтобы изменения вступили в силу. Есть ли хороший способ сделать это?

Сценарии PowerShell.

Это то, что находится в моей папке apache bin:

iconv
ab.exe
abs.exe
ApacheMonitor.exe
apr_dbd_odbc-1.dll
apr_ldap-1.dll
dbmmanage.pl
htcacheclean.exe
htdbm.exe
htdigest.exe
htpasswd.exe
httpd.exe
httxt2dbm.exe
libapr-1.dll
libapriconv-1.dll
libaprutil-1.dll
libeay32.dll
libhttpd.dll
logresolve.exe
openssl.exe
php.ini
php5isapi.dll
php5ts.dll
rotatelogs.exe
ssleay32.dll
wintty.exe
zlib1.dll

Ответы [ 4 ]

6 голосов
/ 07 октября 2013

Вы можете использовать эту команду для перезапуска сервисов Wamp, Apache, MySQL:

Для запуска услуг

NET START wampapache
NET START wampmysqld

Чтобы остановить услуги

NET STOP wampapache
NET STOP wampmysqld

Для mariaDB , заменить wampmysqld на wampmariadb.

Для 64 бит : добавить 64 к именам сервисов.

4 голосов
/ 11 октября 2011

Простая команда выполнения:

httpd.exe -k restart

пс. это мой wathdog для windows

@echo off
:loop

timeout /t 30 /nobreak 
REM . 
tasklist /FI "IMAGENAME eq php-cgi.exe" 2>NUL | find /I /N "php-cgi.exe">NUL
if "%ERRORLEVEL%"=="1" goto Process_NotFound


tasklist /FI "IMAGENAME eq httpd.exe" 2>NUL | find /I /N "httpd.exe">NUL
if "%ERRORLEVEL%"=="1" goto Process_NotFound


goto loop



:Process_NotFound

TASKKILL /F /IM php-cgi.exe
TASKKILL /F /IM httpd.exe

ping 127.0.0.1 -n 2
Apache -k start
ping 127.0.0.1 -n 3
cls
php.exe -r "$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://server.name/'); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   curl_exec($ch);"
ping 127.0.0.1 -n 3
ab.exe -n 10 -c 3 http://server.name/

goto loop
2 голосов
/ 26 мая 2017
  1. CTRL + R -> Тип (команда) -> Правая мышь -> Запуск администратора
  2. Перейдите в папку wamp aptech bin, например: D: \ wamp \ bin \ apache \ apache2.4.9 \ bin>
  3. Введите httpd.exe -d (команда Показать все параметры apache)
  4. httpd.exe -k start -n wampapache64
  5. httpd.exe -k stop -n wampapache64
  6. httpd.exe -k перезагрузка -n wampapache64

Графическая инструкция:

Шаг первый:

enter image description here

Шаг второй:

enter image description here

2 голосов
/ 12 октября 2011

Я закончил тем, что написал код для поиска службы "wampapache" и перезапустил ее.

public static void ResetApache()
{
    ServiceUtil.RestartService("wampapache", 10000);
}

...

public class ServiceUtil
{
    public static void RestartService(string serviceName, int msTimeout)
    {
        ServiceController service = new ServiceController(serviceName);

        int startTicks = Environment.TickCount;
        TimeSpan timeout = TimeSpan.FromMilliseconds(msTimeout);

        if (service.Status != ServiceControllerStatus.Stopped
            && service.Status != ServiceControllerStatus.StopPending)
        {
            service.Stop();
        }

        service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);

        int midTicks = Environment.TickCount;
        timeout = TimeSpan.FromMilliseconds(msTimeout - (midTicks - startTicks));

        service.Start();
        service.WaitForStatus(ServiceControllerStatus.Running, timeout);

        //int finalTicks = Environment.TickCount;
        //var totalTime = TimeSpan.FromTicks(finalTicks - startTicks);

        //Console.WriteLine("Reseting process took " + (totalTime.TotalMilliseconds/1000.0) + " seconds.");
    }
}
...