繁体   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