簡體   English   中英

wget完成下載文件后運行MySQL查詢

[英]Run MySQL Query after wget finishes downloading file

我需要在后台運行的wget上運行特定的mysql查詢,以完成文件下載。 例如...

wget http://domain/file.zip

然后運行:

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

我將如何去做呢?

我建議在子外殼中啟動wget命令,以便在運行mysql命令之前確保它已完成。 在bash中,這是用括號完成的。

還使用&&以便僅在wget命令具有成功退出狀態時才運行mysql命令。

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

在腳本中以純文本形式輸入密碼不一定是一個好主意,因為可以在ps列表中進行查看。

相反,您可以依賴~/.my.cnf文件中的[client]部分。 您也可以使用MYSQL_PWD環境變量。 這些解決方案中的任何一個都意味着在命令列表中沒有可見的密碼。

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

在bash中,它可能很簡單:

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

使用包含您的MySQL查詢的.php文件。

您也可以直接通過MySQL客戶端(已發布)運行MySQL語句,但是您應該避免在syslog / history中輸入MySQL密碼。

好吧,您可以將其放在shell腳本中。

我不了解殼牌如何告訴你

為什么不使用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'");

您可以使用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作為第一個參數,將目標文件名作為第二個參數。 請注意,它使用Python自己的URL檢索庫urllib,如果出於某種原因必須專門使用wget,則可以導入'os'模塊並使用os.system('your command line')。

在Unix中,您可以通過鍵入“ python scriptname.py&”在后台運行腳本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM