mysqld im Hintergrund starten

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

mysqld im Hintergrund starten

Postby Tobias90 » 28. August 2008 10:10

Hallo zusammen!

Ich versuche gerade verzweifelt ein Batch-Script zu schreiben, welches mir Apache, MySQL und den IE startet. Es läuft auch alles schon ganz gut. Das einzige Problem welches ich habe:

Ich starte mysql über:

Code: Select all
Z:\xampp\mysql\bin\mysqld --defaults-file=Z:\xampp\mysql\bin\my.cnf

Leider bleibt das Script dann da hängen weil mysqld die Konsole übernimmt. Ich hätte aber gerne, dass das Script zu Ende läuft und die Konsole sich schliesst. Trotzdem soll mysqld im Hintergrund weiterlaufen.

Gibt es eine Möglichkeit dieses Problem zu lösen, ohne den MySQL-Dienst installieren zu müssen?

Vielen Dank im Voraus!
Tobias90
 
Posts: 4
Joined: 28. August 2008 10:04

Postby Hanspeter Thöni » 28. August 2008 10:53

Versuche es mal mit:
Code: Select all
start Z:\xampp\mysql\bin\mysqld --defaults-file=Z:\xampp\mysql\bin\my.cnf


Damit sollte sich ein neues Fenster öffnen, wo mysql läuft, und dein Batch kann weiterlaufen.
Gleiches gilt dann aber auch für den apachen.
Die beiden neu gestarteten Fenster müssen aber offenbleiben (da mysql bzw. Apache darin laufen).
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby Nobbie » 28. August 2008 11:23

Hanspeter Thöni wrote:Damit sollte sich ein neues Fenster öffnen, wo mysql läuft, und dein Batch kann weiterlaufen.


Damit sich in Batchjobs eben kein neues Fenster öffnet gibt es für "start" die Option "/B":

Code: Select all
start /B Z:\xampp\mysql\bin\mysqld --defaults-file=Z:\xampp\mysql\bin\my.cnf


Die beiden neu gestarteten Fenster müssen aber offenbleiben (da mysql bzw. Apache darin laufen).


Das gilt nur für Apache - mysqld macht sich als Prozess eigenständig und das Fenster schließt sich wieder. Aber mit Option /B wird gar kein Fenster erst geöffnet (mysqld läuft dennoch).
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Hanspeter Thöni » 28. August 2008 11:27

Ok, aber in dem Fall muss das urspüngliche Fenster trotzdem offenbleiben, sonst ist der Prozess auch erschlagen oder?
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby Nobbie » 28. August 2008 11:28

Hanspeter Thöni wrote:Ok, aber in dem Fall muss das urspüngliche Fenster trotzdem offenbleiben, sonst ist der Prozess auch erschlagen oder?


Ne. Habe ich getestet. Läuft weiter.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Tobias90 » 28. August 2008 12:15

Hallo zusammen!

Erstmal vielen Dank für die schnellen Antworten! Es hat mich echt weitergebracht! ;-)

Das Ganze ist jetzt schon fast perfekt. Mein Script sieht momentan folgendermassen aus:

Start.bat
Code: Select all
@echo off
echo Starte Apache...
start /B Z:\xampp\apache\bin\apache.exe

if errorlevel 0 goto start_mysql
if errorlevel 1 goto error_apache

:error_apache
echo Fehler beim Starten von Apache!
goto start_mysql

:start_mysql
echo Starte MySQL...
start /B Z:\xampp\mysql\bin\mysqld --defaults-file=Z:\xampp\mysql\bin\my.cnf
if errorlevel 1 goto error_mysql
goto start_ie

:error_mysql
echo Fehler beim Starten von MySQL!

:start_ie
echo Starte Internet Explorer...
explorer http://localhost/

:finish
echo.
echo Fertig.


Das Ganze läuft jetzt sauber durch - keine Unterbrüche, keine Fehler. Leider bleibt die Konsole nach der Ausgabe von «Fertig.» aber offen...? Sobald ich sie schliesse (bzw. den Prozess abschiessen muss) läuft weder apache noch mysqld.

Das Script um das Ganze zu stoppen sieht so aus:

Code: Select all
@echo off
echo Stoppe Apache...
start /B Z:\xampp\apache\bin\pv -f -k apache.exe -q
if not exist Z:\xampp\apache\logs\httpd.pid GOTO stop_mysql
del Z:\xampp\apache\logs\httpd.pid

:stop_mysql
echo Stoppe MySQL...
start /B Z:\xampp\mysql\bin\mysqladmin --user=pma --password= shutdown

:finish
echo.
echo Fertig.


Auch hier läuft alles sauber durch, bis auf eine Fehlermeldung beim Beenden von mysqld:

Die Anweisung "0x0053d3c0" verweist auf Speicher (bla bla bla). Die Daten wurden wegen eines E/A-Fehler in "0x000 (...)" nicht in den Arbeitspseicher übertragen.


Wenn ich die Fehlermeldung mit OK beende, geht die Konsole zu. Klicke ich bei der Fehlermeldung auf Abbrechen (für Debuggen), dann erscheint in der Konsole diese Ausgabe:

Connect to server at "localhost" failed error: "Lost connection to MySQL server at "reading initial communication packet", system error: 2"


Eine Idee an was das liegen könnte?

Vielen Dank!
Tobias90
 
Posts: 4
Joined: 28. August 2008 10:04

Postby Nobbie » 28. August 2008 13:44

>(bzw. den Prozess abschiessen muss) läuft weder apache noch mysqld.

Bei mir läuft mysqld weiter - aber Apache ist dann wirklich beendet. Du mußt das Fenster auflassen (minimieren).
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Tobias90 » 28. August 2008 14:27

Ah ok. Naja, wenns anders nicht geht muss ich mich wohl damit abfinden!

Aber trotzdem vielen Dank. Der Tipp mit dem Start /B hat viel geholfen!


Gruss
Tobias90
 
Posts: 4
Joined: 28. August 2008 10:04

Postby Nobbie » 28. August 2008 15:01

Warum installierst Du Apache nicht als Dienst (Service)? Dann kannst Du es im Batchfile mit den Angaben "start" und "stop beenden":

apache.exe -k start
apache.exe -k stop
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Tobias90 » 28. August 2008 15:06

Das Problem ist, dass XAMPP auf eine USB-Stick läuft und ständig an verschiedenen Computern mit sehr eingeschränkten Benutzerrechten angeschlossen wird.

Die Installation des Dienstes hatte ich vor der aktuellen Lösung versucht. Aufgrund der fehlenden Rechte bei den Benutzern musste ich dann eine andere Lösung suchen.
Tobias90
 
Posts: 4
Joined: 28. August 2008 10:04

Postby deepsurfer » 28. August 2008 15:11

Da Du eh mit Stick unterwegs bist, so würde die DosBox auch kein Problem darstellen, man kann diese ja einfach minimieren.

Sogar Vorteil, sollte der Prozess abshclten so schliesst sich die DosBox und man sieht auf den ersten Blick das etwas unerwartetes passiert ist und setzt sich nicht den Peinlichen Blicken aus, wenn ständig Fehler und Timeouts auf dem Browser Erscheinen.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 26 guests