2011-10-05 16 views
5

W ramach niektórych zautomatyzowanych skryptów wdrażania + testów używam do weryfikacji programowania dla strony, mam kilka skryptów, które aktualizują pliki konfiguracyjne Apache. Chciałbym programowo ponownie uruchomić WAMP, aby zmiany zaczęły obowiązywać. Czy jest to dobry sposób na zrobienie tego?jak programowo uruchomić ponownie WAMP lub Apache?

Skrypty to powershell.

To co jest w moim folderze bin apache:

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 
+0

Dodaj 'apachectl -k graceful' na końcu twojego skryptu? Może powinienem zapytać najpierw, jaki to jest skrypt ... – bdares

+0

To jest skrypt PowerShell. Nie widzę pliku apachectl.exe w dowolnym miejscu. –

+0

Jest w folderze bin apache.(Może to być nazywane 'apache2ctl'.) – bdares

Odpowiedz

3

Można użyć tego polecenia do restartu wamp, Apache, MySQL usługi

Do uruchomienia usług

NET START wampapache 
NET START wampmysqld 

Dla Zatrzymaj Usługi

NET STOP wampapache 
NET STOP wampmysqld 
4

Proste wykonanie polecenia:

httpd.exe -k restart

ps. to jest mój wathdog do okien

@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 
+0

Pomocne, dzięki! – Mike

2

skończyło się na pisanie kodu, aby znaleźć „wampapache” usługi i uruchomić go ponownie.

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."); 
    } 
} 
1
  1. CTRL + R -> Typ (Command) -> Prawy przycisk myszy -> Uruchom Administrator
  2. Przejdź do folderu bin wamp Aptech przykład: D: \ wamp \ bin \ apache \ apache2.4.9 \ bin >
  3. Rodzaj httpd.exe -d (Pokaż wszystkie apache polecenie parametru)
  4. httpd.exe -k rozpocząć -n wampapache64
  5. httpd.exe -k zatrzymać -n wampapache64
  6. httpd.exe -k restart -n wampapache64

graficzny Instrukcja:

Krok Pierwszy:

enter image description here

Krok Drugi:

enter image description here

Powiązane problemy