Wget indirmeden dosya tamamlandıktan sonra MySQL sorgusu çalıştırın

6 Cevap php

Ben arka planda çalışan wget üzerine belirli bir mysql sorgu çalıştırmak için gereken, bir dosya indirirken tamamlanır. Örneğin ...

wget http://domain/file.zip

sonra çalıştırın:

GÜNCELLEME table SET status = 'canlı' NEREDE id = '1234 '

Bunu nasıl yapıyor hakkında gitmek istiyorsunuz?

6 Cevap

Eğer mysql komutu çalıştırmadan önce tamamlanmasını sağlamak böylece ben bir kabuktaki wget komutu başlatılması öneriyoruz. Bash, bu parantez ile yapılır.

Ayrıca && mysql komutu wget komutu bir başarı çıkış durumları sadece çalışır böylece kullanmak.

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

Bir ps listesinde görülebilir çünkü komut düz metin parola koymak not necessarily a good idea olduğunu.

Bunun yerine, ~/.my.cnf dosyasındaki [client] bölümünde güvenebilirsiniz. Ayrıca MYSQL_PWD çevre değişkeni kullanabilirsiniz. Bu çözümlerden birini komut listesinde görünür hiçbir parola var demektir.

wget http://domain/file.zip && mysql-u user-ppassword veritabanı e "UPDATE tablo SET status = 'canlı' WHERE id = '1234 '"

: Bash muhtemelen kadar basit olurdu

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

MySQL sorgusu içeren. Php dosyası ile.

Ayrıca MySQL istemcisi (zaten yayınlanmıştır oldu) yoluyla doğrudan MySQL deyimi çalıştırabilirsiniz, ancak blok / tarihinin MySQL şifrenizi sahip dikkatli olmalıdır.

Peki, sadece bir kabuk içine koyabilirsiniz.

Sana söylemek Shell hakkında enlough bilmiyorum nasıl olsa

Neden file_get_contents kullanın veya curl PHP içinde dosyayı indirmek için değil?

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

Böylece Python script can ...

#!/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'")

Bu ikinci olarak birinci argüman ve hedef dosya adı olarak kaynak URL'sini alır. Eğer herhangi bir sebeple özellikle size 'os' modülü almak ve os.system ('komut satırı') kullanabilirsiniz wget kullanmak zorunda varsa, bu, piton kendi URL alma kütüphane urllib kullanır dikkat etmeyin.

Unix size yazarak arka planda komut dosyasını çalıştırın 'piton scriptname.py &' olabilir