mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-13 01:14:56 +03:00
Auto-build: copilot (python) from 7fa279c
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
# web-stop v1.0 — Stop Apache HTTP Server
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Остановка Apache HTTP Server
|
||||
|
||||
.DESCRIPTION
|
||||
Останавливает Apache HTTP Server. Сначала пытается graceful shutdown,
|
||||
при неудаче — принудительная остановка.
|
||||
|
||||
.PARAMETER ApachePath
|
||||
Корень Apache (по умолчанию tools\apache24)
|
||||
|
||||
.EXAMPLE
|
||||
.\web-stop.ps1
|
||||
|
||||
.EXAMPLE
|
||||
.\web-stop.ps1 -ApachePath "C:\tools\apache24"
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$ApachePath
|
||||
)
|
||||
|
||||
$OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||||
|
||||
# --- Resolve ApachePath ---
|
||||
if (-not $ApachePath) {
|
||||
$projectRoot = (Get-Item $PSScriptRoot).Parent.Parent.Parent.Parent.FullName
|
||||
$ApachePath = Join-Path $projectRoot "tools\apache24"
|
||||
}
|
||||
|
||||
# --- Helper: filter httpd processes by our ApachePath ---
|
||||
$httpdExe = Join-Path (Join-Path $ApachePath "bin") "httpd.exe"
|
||||
$httpdExeNorm = (Resolve-Path $httpdExe -ErrorAction SilentlyContinue).Path
|
||||
function Get-OurHttpd {
|
||||
Get-Process httpd -ErrorAction SilentlyContinue | Where-Object {
|
||||
try { $_.Path -eq $httpdExeNorm } catch { $false }
|
||||
}
|
||||
}
|
||||
|
||||
# --- Check process (only our Apache) ---
|
||||
$httpdProc = Get-OurHttpd
|
||||
if (-not $httpdProc) {
|
||||
$foreign = Get-Process httpd -ErrorAction SilentlyContinue
|
||||
if ($foreign) {
|
||||
Write-Host "Наш Apache не запущен" -ForegroundColor Yellow
|
||||
Write-Host "[WARN] Обнаружен сторонний Apache (PID: $(($foreign | Select-Object -First 1).Id))" -ForegroundColor Yellow
|
||||
} else {
|
||||
Write-Host "Apache не запущен" -ForegroundColor Yellow
|
||||
}
|
||||
exit 0
|
||||
}
|
||||
|
||||
$pids = ($httpdProc | ForEach-Object { $_.Id }) -join ", "
|
||||
Write-Host "Останавливаю Apache (PID: $pids)..."
|
||||
|
||||
# --- Stop our processes ---
|
||||
$httpdProc | Stop-Process -Force -ErrorAction SilentlyContinue
|
||||
|
||||
# --- Wait for shutdown ---
|
||||
$maxWait = 5
|
||||
$elapsed = 0
|
||||
while ($elapsed -lt $maxWait) {
|
||||
Start-Sleep -Seconds 1
|
||||
$elapsed++
|
||||
$check = Get-OurHttpd
|
||||
if (-not $check) {
|
||||
Write-Host "Apache остановлен" -ForegroundColor Green
|
||||
Write-Host "Публикации сохранены. Перезапуск: /web-publish <база> Удаление: /web-unpublish --all" -ForegroundColor Gray
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
# --- Fallback: force kill ---
|
||||
$remaining = Get-OurHttpd
|
||||
if ($remaining) {
|
||||
Write-Host "Принудительная остановка..." -ForegroundColor Yellow
|
||||
$remaining | Stop-Process -Force -ErrorAction SilentlyContinue
|
||||
Start-Sleep -Seconds 1
|
||||
$final = Get-OurHttpd
|
||||
if ($final) {
|
||||
Write-Host "Error: не удалось остановить Apache" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "Apache остановлен" -ForegroundColor Green
|
||||
Write-Host "Публикации сохранены. Перезапуск: /web-publish <база> Удаление: /web-unpublish --all" -ForegroundColor Gray
|
||||
Reference in New Issue
Block a user