我需要在後臺運行的wget上運行特定的mysql查詢,完成下載文件。例如...wget完成下載文件後運行MySQL查詢
然後運行:
UPDATE
table
SETstatus
= '活' WHEREid
= '1234'
將如何我去做這個?
我需要在後臺運行的wget上運行特定的mysql查詢,完成下載文件。例如...wget完成下載文件後運行MySQL查詢
然後運行:
UPDATE
table
SETstatus
= '活' WHEREid
= '1234'
將如何我去做這個?
我建議在子shell中啓動wget命令,以便在運行mysql命令之前確保它已完成。在bash中,這是用圓括號完成的。
還使用&&
,以便mysql命令僅在wget命令具有成功退出狀態時才運行。
#!/bin/sh
(
wget "http://domain/file.zip" && mysql -u user -ppassword database -e "UPDATE..."
) &
在腳本把明文密碼是not necessarily a good idea,因爲它可以在ps
上市觀看。
取而代之,您可以依靠~/.my.cnf
文件中的[client]
部分。您也可以使用MYSQL_PWD
環境變量。這些解決方案都意味着在命令列表中沒有可見的密碼。
那麼,你可以把它放在一個shell腳本中。
我不知道enlough關於殼牌告訴你怎麼雖然
爲什麼不使用file_get_contents
或curl
從內部PHP下載的文件?
$data = file_get_contents('http://domain/file.zip');
file_put_contents('file.zip', $data);
mysql_query("UPDATE table SET status = 'live' WHERE id = '1234'");
你可以編寫腳本它在Python這樣......
#!/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'")
這需要源URL作爲第一個參數和目標文件名作爲第二個。請注意,這使用Pythons自己的URL檢索庫urllib,如果由於任何原因你必須特別使用wget,你可以導入'os'模塊並使用os.system('你的命令行')。
在UNIX中,你可以通過鍵入在後臺運行腳本 '蟒蛇scriptname.py &'
wget http://domain/file.zip && mysql -u user -ppassword database -e "UPDATE table SET status = 'live' WHERE id = '1234'"
雖然取決於系統,但您可能不想將密碼直接放在命令行上。 – user84643 2009-05-20 04:39:06
mysql -u user --password =`cat my_secret_password.txt`數據庫... – 2009-05-20 05:13:55
在bash它可能會是這麼簡單:
#!/bin/bash
wget -q http://domain.tld/file.zip || exit 0
/usr/bin/php somefile.php
隨着包含你的MySQL查詢的.php文件。
您也可以直接通過MySQL客戶端(已發佈)運行MySQL語句,但是您應該警惕在您的系統日誌/歷史記錄中使用MySQL密碼。
這些文件非常大,我們一次做了幾次下載。需要wget才能在後臺下載,而不依賴於PHP腳本。 – 2009-05-20 04:27:10