2009-05-20 25 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密码。