2009-05-20 39 views

回答

3

我建議在子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環境變量。這些解決方案都意味着在命令列表中沒有可見的密碼。

0

那麼,你可以把它放在一個shell腳本中。

我不知道enlough關於殼牌告訴你怎麼雖然

0

爲什麼不使用file_get_contentscurl從內部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'"); 
+0

這些文件非常大,我們一次做了幾次下載。需要wget才能在後臺下載,而不依賴於PHP腳本。 – 2009-05-20 04:27:10

0

你可以編寫腳本它在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 &'

1

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

+0

雖然取決於系統,但您可能不想將密碼直接放在命令行上。 – user84643 2009-05-20 04:39:06

+0

mysql -u user --password =`cat my_secret_password.txt`數據庫... – 2009-05-20 05:13:55

1

在bash它可能會是這麼簡單:

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

隨着包含你的MySQL查詢的.php文件。

您也可以直接通過MySQL客戶端(已發佈)運行MySQL語句,但是您應該警惕在您的系統日誌/歷史記錄中使用MySQL密碼。