我需要在后台运行的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