Frage

Ich brauche eine bestimmte mysql query auf wget auszuführen, die im Hintergrund ausgeführt wird, eine Datei der Download abgeschlossen ist. Zum Beispiel ...

  

http: //domain/file.zip

dann laufen:

  

UPDATE table SET status = 'live' WHERE id = '1234'

Wie würde ich mich über das Tun dies?

War es hilfreich?

Lösung

Ich würde empfehlen, den wget-Befehl in einer Subshell starten, so dass Sie sicherstellen können, es abgeschlossen ist, bevor Sie Ihren mysql-Befehl ausführen. In bash wird dieser mit Klammern getan.

Auch && verwenden, so dass der MySQL-Befehl wird nur ausgeführt, wenn der Befehl wget einen Erfolg Exit-Status hat.

#!/bin/sh
(
  wget "http://domain/file.zip" && mysql -u user -ppassword database -e "UPDATE..."
) &

Setzen Sie das Passwort im Klartext in dem Skript ist nicht unbedingt eine gute Idee , weil es in einem ps Eintrag angezeigt werden kann.

Sie können stattdessen auf dem [client] Abschnitt in Ihrer ~/.my.cnf Datei verlassen. Sie können auch die MYSQL_PWD Umgebungsvariable verwenden. Jede dieser Lösungen bedeutet, dass es kein Passwort sichtbar in der Befehlsliste.

Andere Tipps

wget http://domain/file.zip && mysql -u user -ppassword database -e "UPDATE table SET status = 'live' WHERE id = '1234'"

In der bash wäre es wahrscheinlich so einfach sein wie:

#!/bin/bash
wget -q http://domain.tld/file.zip || exit 0
/usr/bin/php somefile.php

Mit der Php-Datei MySQL-Abfrage enthält.

Sie können auch die MySQL-Anweisung direkt über das MySQL-Client ausführen (das ist bereits gebucht), aber Sie sollten sich mit Ihrem MySQL-Kennwort in der syslog / Geschichte vorsichtig sein.

Nun, könnte man es nur in einem Shell-Skript setzen.

Ich weiß nicht, über Shell enlough Ihnen sagen, wie wenn

Warum nicht file_get_contents oder curl verwenden, um die Datei in PHP herunterladen?

$data = file_get_contents('http://domain/file.zip');
file_put_contents('file.zip', $data);
mysql_query("UPDATE table SET status = 'live' WHERE id = '1234'");

Sie können Skript es in Python so ...

#!/usr/bin/python
import sys, MySQLdb, urllib

urllib.urlretrieve(sys.argv[1], sys.argv[2])
db = MySQLdb.connect(host="localhost", user="username", passwd="password", db="database")
cursor = db.cursor()
cursor.execute("UPDATE table SET status = 'live' WHERE id = '1234'")

Dies ist der Quell-URL als erstes Argument und dem Zieldateinamen wie die zweite. Sie weisen diese Pythons eigene URL abrufen Bibliothek urllib verwendet, wenn aus irgendeinem Grund Sie wget verwenden müssen speziell Sie könnten Sie die ‚os‘ Modul importieren und verwenden os.system ( ‚Befehlszeile‘).

In Unix können Sie das Skript im Hintergrund laufen, die von 'Python scriptname.py &' eingeben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top