mysql über php script starten (freeBSD)

T

termi

Grünschnabel
Hallo zusammen,

also ich möchte den mysql über ein PHP Script starten.
der Befehl lautet ja
Code:
mysqld_safe &
so aber wenn ich den über system("mysqld_safe &"); in php ausführe dann wartet php ja auf ne rückgabe... d.h. das Script geht nicht weiter :( aber danach kommen ja noch commands...

also gibt es eine Variante den mysql so zu starten das der Prozess als Service gestartet wird... also das PHP nicht auf irgendwelche rückgabewerte wartet.

Oder gibt es in PHP irgendeine Funktion die die Rückgabewerte einfach ignoriert?

Wäre um jede Hilfe / Vorschläge dankbar,
termi
 
Servus,

exec

(PHP 4, PHP 5)

exec — Führt ein externes Programm aus

Beschreibung

string exec ( string befehl [, array ausgabe [, int return_var]] )

Fals dein Code hier hängen bleibt, dann liegt ein Fehler in deinem Commando. Ich persönlich würde ein Shell-Script erstellen, dass die DB hochfährt und auf Fehler reagiert und danach eine Meldung über return_var zurück gibt.

MfG,
Thomas
 
ja egal was ich benutz...
system oder exec

bei jedem bleibt er an der stelle stehn, weil das script das ich aufrufe ein endlosscript ist... (also mysqld_safe)
also die beiden funktionen warten darauf bis der prozess beendet is, aber er soll sich ja net beenden :\

also kann man der funktion net irgendwie sagen das er einfach nur den befehl ausführen soll und sich danach sofort wieder dem php script widmen? :D

termi.
 
wieso lässten den mysql server ned dauerhaft laufen wie normalerweise?
 
ich hab ne datenbank replikation... und dafür will ich nen monitoring tool über php schreiben...
also ich will dann praktisch über knopfdruck die replikation neu aufsetzen... also dann über script:
- auf dem master datenbank dumpen
- master server starten
- datenbank dump per rsync rüberkopiern
- sql stoppen
- dump reinkopiern
- sql starten
- slave starten

so das script läuft ja auch perfekt... bis auf den befehl zum starten des mysql, anschließen kommen halt noch genau 2 commands... zum slave starten und die config in der die master daten stehn.

könnte das auch immer manuell per hand machen, allerdings sollen das dann später auch mal leute bedienen die keine ahnung davon haben.
 
Zuletzt bearbeitet:
vll helfen dir die befehle sleep() und exit() weiter, wenn du sie richtig anwendest
 
also kann man der funktion net irgendwie sagen das er einfach nur den befehl ausführen soll und sich danach sofort wieder dem php script widmen? :D

Nö. Dir bleibt IMHO nur die Möglichkeit selbst einen Prozess zu starten und darin mysql_safe auszuführen. Siehe Kapitel Process Control Functions im PHP Manual.
Fallst du vorher noch nicht mir fork und konsorten gearbeitet hast, solltest du vielleicht auch einen Blick in ein Buch zur Linux/Unix-Systemprogrammierung werfen, z.B. Linux-Unix-Programmierung auf pronix.de (besonders die Abschnitte 6.8, 6.9, 6.10).

Gruß,
Philip
 
also jetzt nochma zur lösung:
ich habs jetzt nich sehr sauber gelöst, aber es funktioniert... ich hab nen externes shell script geschrieben das nichts anderes macht als den Befehl auszurufen und die Ausgaben in eine Datei umleitet (mysqld_safe > ausgabe.txt)
allerdings bin ich damit auch nicht sehr zufrieden.
Allerdings hört sich das Process Control von PHP sehr interessant an, das ist genau das was ich brauch.
Werde es dann damit schreiben wenn ich das Monitoring - Tool aufsetze.

Vielen Dank =)

liebe Grüße,
Alex
 
ch habs jetzt nich sehr sauber gelöst, aber es funktioniert... ich hab nen externes shell script geschrieben das nichts anderes macht als den Befehl auszurufen und die Ausgaben in eine Datei umleitet (mysqld_safe > ausgabe.txt)
Gut gelösst 8) Fals du auf die Rückgegebene Werte noch reagieren möchtest (EventHandler) würde ich dir Empfehlen dies ebenfalls über Shell zu realisieren.
 

Ähnliche Themen

Queue für copy Script

Probleme mit PHP-Scripten auf Apache-Server: Apache friert ein

Problem mit Apache2 + MySQL Server

Mysql connect Problem

Probleme mit FFmpeg / PHP/ 70 Load / iowait

Zurück
Oben