Wie elegant per Script gestarteten php-dev-webserver stoppen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
schwedenmann
Beiträge: 5528
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Wie elegant per Script gestarteten php-dev-webserver stoppen

Beitrag von schwedenmann » 08.08.2020 18:00:45

Hallo

system: debian-Sid, php7.4

Im Moment arbeite ich mich ein bißchen in GUi für dbms ein (adminer,phppgadmin und phpmyadmin). Nachdem ich es aufgegegebn habne, die GUI per installiertem Webserser (nginx) aufzurufen, bin ich in einer de docs auf den php-webserver per :
php -S localhost:8000 gestoßen. das Ganze ist nur local, im eigenen Netz also kein Sicherheitsrisiko :mrgreen:
Wenn ich also das ganze z,B. im terminal so mache.

cd /usrshare/adminer
phop -S localhost:8000

dann irgendeinen Browser aufrufen und http://localhost:8000/adminer aufrufen,es erscheint das adminer login-Fenster. Bende ich den Browser kann ich ins Terminal wechseln, wo ich php -S usw. aufgerufen habe und per Ctrl +S den Server benden.
Jetzt habe ich diese ganzen Aufrufe in ein Script gepackt und rufe das per wmdrawer auf (ist eine dockapp um unter wmaker , oder wie jetzt bei mir unter openbox) Programme zu starten.
Der Eintrag lautet dort wie folgt: /home/joerg/Scripte/admine.sh . Funktioniertt auch alles, nur jetzt kommt der Haken. Der php-webserver läuft nach beenden des Browsers nat. weiter, bzw. des Brwoserfensters mit adminer weiter. stoppen kann ich ihn jetzt nur wenn ich in einem Terminal :per
ps aux | grep php
mit anschließendem kill piddesphpserverprozesses eingebe.

Gibt es eine elegante Möglichkeit im Aufrufscript die PID zu suchen und per tastenkombi zu beenden, wenn der Brwoser bendet wird ?

Das scrippt für wmdrawer (wie auch für den alias admine sieht so aus:
#!/bin/bash
2
3 f () {
4 sleep 15
5 /usr/bin/eric6_browser http://localhost:8000/adminer
6 }
7
8 # starte eric6-browser, warte aber 15 sek auf den server
9 f &
10
11
14 cd /usr/share/adminer
15 php -S localhost:8000
mfg
schwedenmann

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Wie elegant per Script gestarteten php-dev-webserver stoppen

Beitrag von JTH » 08.08.2020 19:18:41

Ich würde es umdrehen: Erst PHP im Hintergrund starten, (wenn notwendig) warten, dann Browser starten. Wenn der Browser beendet wurde, im Skript PHP beenden:

Code: Alles auswählen

#!/bin/sh

cd /usr/share/adminer
php -S localhost:8000 &
php_pid=$!
sleep 15
/usr/bin/eric6_browser http://localhost:8000/adminer
kill "$php_pid"

Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Wie elegant per Script gestarteten php-dev-webserver stoppen

Beitrag von Tintom » 08.08.2020 23:01:13

Falls du Browser und Server separat starten/stoppen möchtest:

Code: Alles auswählen

#!/bin/sh

HOST=localhost
PORT=8000

help() {
        cat <<-!
                f     = start eric browser
                ff    = stop eric browser
                1     = start server
                0     = stop server
                k     = stop server + browser	
                h|"?" = this help
                q     = quit
!
}

f() {
	/usr/bin/eric6_browser http://$HOST:$PORT/adminer
	echo $!
}

start_server() {
	if [ -z $PID_SERVER ];then
		cd /usr/share/adminer
		php -S $HOST:$PORT
		echo $!
	else
		echo $PID_SERVER
	fi	
}

while :; do
	printf "> "
        read -r cmd
        case "$cmd" in
        q)      exit ;;
        f)      echo "Start Browser ..." && PID_BROWSER=$(f) ;;
        ff)     echo "Stop Browser ..." && kill $PID_BROWSER ;;
	1)	echo "Start Server ..." && PID_SERVER=$(start_server) ;;
        0)      echo "Stop Server ..." && kill $PID_SERVER ;;
	k)      echo "Stop Server ..." && kill $PID_SERVER && echo "Stop Browser ..." && kill $PID_BROWSER ;;
        h|"?"|*)  help ;;    
	esac
done

Antworten