Das Umleitungszeichen unter Microsoft Windows wie auch unter anderen Betriebssystemen wie Linux, OS X usw. ist ">". So können Sie die Ausgabe wie folgt umleiten:
php.exe -S 127.0.0.1:80 -t path/to/my/app/webroot my_app_bootstrap_script.php > "C:\somedir\php.log"
Ändern Sie den Verzeichnispfad und den Dateinamen nach Ihren Wünschen. Sie müssen diese Informationen nicht in doppelte Anführungszeichen setzen, es sei denn, Sie haben ein Leerzeichen im Verzeichnispfad oder im Dateinamen, aber Sie tun dies, wenn ein Leerzeichen vorhanden ist und es nicht schadet, sie in beiden Fällen einzuschließen.
Hinweis: Wenn Sie das Zeichen ">" verwenden und bereits eine Datei mit dem von Ihnen angegebenen Speicherort und Namen vorhanden ist, wird diese Datei überschrieben. Wenn Sie stattdessen möchten, dass die Protokolldatei weiter wächst, dh beim nächsten Start von php.exe an eine vorhandene Datei angehängt werden soll, verwenden Sie >>
statt >
. Dies führt dazu, dass die Datei erstellt wird, wenn sie nicht vorhanden ist. Die Ausgabe wird jedoch an eine vorhandene Datei angehängt.
Mit dem Befehl taskkill können Sie einen Prozess beenden. Zum Beispiel könnten Sie verwenden:
taskkill /f /fi "imagename eq php.exe"
Das wird /f
möglicherweise nicht benötigt, aber mit dieser Option können Sie den Befehl taskkill veranlassen, Prozesse zu schließen, die andernfalls möglicherweise nicht geschlossen werden. Das /fi
filtert die Ausgabe des Befehls taskkill. In diesem Fall würden Sie filtern, sodass nur Prozesse mit dem Namen php.exe angezeigt werden. Wenn der Prozess nicht ausgeführt wird, wird Folgendes angezeigt, wenn Sie diesen Befehl absetzen:
C:\>taskkill /fi "imagename eq php.exe"
INFO: No tasks running with the specified criteria.
Sie können mit dem Befehl tasklist überprüfen, ob php.exe bereits ausgeführt wird:
tasklist /fi "imagename eq php.exe"
Das zeigt Ihnen alle Instanzen eines Prozesses mit dem Namen php.exe, die ausgeführt werden. In einigen Fällen können mehrere Prozesse mit demselben Namen ausgeführt werden, z. B. chrome.exe. In anderen Fällen, wie z. B. explorer.exe, sollte nur eine angezeigt werden, und die folgende wird angezeigt:
C:\>tasklist /fi "imagename eq explorer.exe"
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
explorer.exe 91484 Console 1 37,424 K
Sie können auch überprüfen, ob es ausgeführt wird, indem Sie die Ausgabe des Befehls "tasklist" mit dem Befehl "|" an den Befehl "find" weiterleiten. Pipe-Charakter. Z.B:
C:\>tasklist /fi "imagename eq explorer.exe" | find /i /c "explorer.exe"
1
Die /i
Instruktionen finden, dass die Groß- und Kleinschreibung von Buchstaben ignoriert werden muss, z. In diesem Fall wird es wahrscheinlich nicht benötigt, wenn der Prozess immer "php.exe" heißt, aber ich habe es erwähnt, falls Sie find "Php.exe"
den Prozess "php.exe" verwenden könnten. Der /c
Befehl tell find zählt nur die Anzahl der Vorkommen der Zeichenfolge, nach der gesucht werden soll.
Wenn das Ergebnis "1" ist oder größer, wenn der Prozess mehr als einmal ausgeführt werden kann, wird er ausgeführt. Wenn es "0" ist, läuft es nicht. In Ihrem Fall lautet die Antwort wahrscheinlich immer 0 oder 1 und Sie würden "explorer.exe" in "php.exe" ändern. Wenn Sie möchten, können Sie das Ergebnis testen und den Befehl taskkill ausgeben, wenn der Wert nicht Null ist, oder Sie können den Befehl taskkill jederzeit ausgeben, wenn der Prozess angehalten werden soll, wenn er ausgeführt wird. Wenn der Befehl taskkill nicht ausgeführt wird, wird nur "INFO: Keine Aufgaben mit den angegebenen Kriterien ausgeführt" gemeldet.
Wenn Sie nicht möchten, dass das Fenster geöffnet bleibt, können Sie den Befehl "start" in Ihrer Batch-Datei verwenden. Z.B,
start "PHP" "php.exe -S 127.0.0.1:80 -t path/to/my/app/webroot my_app_bootstrap_script.php"
Das "PHP" nach dem Befehl liefert einen Titel für das Fenster. Sie können den Befehl start /?
an einer Eingabeaufforderung eingeben, um die Optionen für den Startbefehl anzuzeigen.