Windows'ta bir arka plan işlemi çalıştırmak ve durdurmak için.


3

Uygulamayı localhost'ta test etmek için PHP yerleşik web sunucusunu başlatabilir ve durdurabilen PHP uygulamamla iki basit pencere yarasa dosyasını paketlemek istiyorum.

winlaunch.batŞu ana kadar elde ettiklerim :

php.exe -S 127.0.0.1:80 -t path/to/my/app/webroot my_app_bootstrap_script.php

Nasıl yapılacağını bilmediğim şeyler:

  • Çıktıyı bir günlük dosyasına nasıl yönlendiririm?
  • Uygulamayı çalışır durumda tutarken, Windows Gezgini'nden çağrıldığında komut penceresini otomatik olarak nasıl kapatabilirim?
  • Durdurma komut dosyasına ne koyacağım?
  • Uygulamanın zaten çalışıp çalışmadığını nasıl kontrol ederim?

Yanıtlar:


4

Microsoft Windows'taki Linux, OS X, vb. Diğer işletim sistemlerinde olduğu gibi yönlendirme karakteri ">" dir. Böylece çıktıyı şu şekilde yönlendirebilirsiniz:

php.exe -S 127.0.0.1:80 -t path/to/my/app/webroot my_app_bootstrap_script.php > "C:\somedir\php.log"

Dizin yolunu ve dosya adını istediğiniz gibi olacak şekilde değiştirin. Dizin yolunda veya dosya adında bir boşluk yoksa, bu bilgilerin etrafında çift tırnak gerekmez, ancak bir boşluk varsa bunu yapın ve her iki durumda da bunları eklemeniz zarar vermez.

Not: ">" karakterini kullandığınızda, belirttiğiniz konum ve adda zaten bir dosya varsa, o dosyanın üzerine yazılır. Bunun yerine, günlük dosyasının büyümeye devam etmesini istiyorsanız, yani php.exe'yi bir sonraki başlatışınızda mevcut bir dosyaya eklemek ve ardından >>yerine kullanmak istediğinizde >. Bu mevcut değilse, dosyanın oluşturulmasına neden olur, ancak çıktı varolan bir dosyaya eklenir.

Bir işlemi sonlandırmak için taskkill komutunu kullanabilirsiniz. Örneğin, şunları kullanabilirsiniz:

taskkill /f /fi "imagename eq php.exe"

Bu /fgerekli olmayabilir, ancak bu seçenekle, aksi takdirde kapanmayacak şekilde kapatmak için taskkill komut kuvveti işlemlerine sahip olabilirsiniz. /fiFiltreler NotTaskkill komutunun çıkışı. Bu durumda filtreleme yapıyorsunuz, böylece sadece php.exe adlı işlemleri görüyorsunuz. İşlem çalışmıyorsa, bu komutu verirseniz aşağıdakileri göreceksiniz:

C:\>taskkill /fi "imagename eq php.exe"

INFO: No tasks running with the specified criteria.

Php.exe dosyasının görev listesi komutunu kullanarak çalışıp çalışmadığını kontrol edebilirsiniz:

tasklist /fi "imagename eq php.exe"

Bu, çalışan php.exe adlı bir işlemin tüm örneklerini gösterir. Bazı durumlarda, aynı ada sahip çoklu işlemlere sahip olabilirsiniz, örneğin, chrome.exe. Explorer.exe gibi diğer durumlarda, yalnızca birini görmelisiniz ve aşağıdaki gibi bir şey göreceksiniz:

C:\>tasklist /fi "imagename eq explorer.exe"

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
explorer.exe                 91484 Console                    1     37,424 K

Ayrıca, görev listesi komutunun çıktısını "|" komutuyla find komutuna "piping" yaparak da çalışıp çalışmadığını kontrol edebilirsiniz. boru karakteri Örneğin:

C:\>tasklist /fi "imagename eq explorer.exe" | find /i /c "explorer.exe"
1

/iTalimatını örneğin harfler, küçük harf görmezden bulmak, büyük ve küçük harf kullanımının önemi yoktur. İşlem her zaman "php.exe" olarak adlandırılacaksa, muhtemelen bu durumda gerekli değildir, ancak işlemin "php.exe" olarak adlandırılması durumunda kullanabileceğinizden bahsettim find "Php.exe". /cEğer aramaya söyledim dizelerinin sayısını saymak için sadece bulmak söyler.

Sonuç "1" ise veya işlem bir kereden fazla çalışabiliyorsa daha büyükse, çalışıyor demektir. "0" ise, çalışmıyordur. Senin durumunda cevap muhtemelen her zaman 0 ya da 1 olacak ve "explorer.exe" yi "php.exe" olarak değiştireceksin. İsterseniz sonucu test edebilir ve değer sıfır değilse taskkill komutunu çalıştırabilir veya çalışıyorsa işlemi durdurmak istediğiniz zaman taskkill komutunu verebilirsiniz. Taskkill komutu çalışmıyorsa, sadece "INFO: Belirlenen kriterlerle çalışan görev yok" u bildirir.

Pencerenin açık kalmasını istemiyorsanız, toplu iş dosyanızdaki "start" komutunu kullanabilirsiniz. Örneğin,

start "PHP" "php.exe -S 127.0.0.1:80 -t path/to/my/app/webroot my_app_bootstrap_script.php"

Komuttan sonra "PHP" penceresi için bir başlık sağlıyor. Sen komutu verebilirsiniz start /?Start komutu için seçeneklerini görmek için komut isteminde.


Tüm sorularıma cevap vermeye zaman ayırdığınız için çok teşekkür ederim. Bunu yer
imlerimde tutacağım
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.