我需要运行时wget的一个特定的MySQL查询,这是在后台运行,完成下载的文件。例如...

  

的wget HTTP://domain/file.zip

然后运行:

  

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

我怎么会去这样做呢?

有帮助吗?

解决方案

我会建议在子shell启动wget命令,这样可以保证它完成你运行你的mysql命令之前。在bash中,这是用括号进行。

使得MySQL的命令运行仅当wget命令具有成功退出状态

还可以使用&&

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

在明文把密码在脚本是不一定是一个好主意,因为它可以在一个ps列表查看。

相反,你可以依靠你的[client]文件~/.my.cnf部分。您也可以使用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的声明直接(包括已经公布),但你应该警惕在你的系统日志/历史有你的MySQL密码。

好了,你可以把它放在一个shell脚本。

我不知道enlough关于壳牌告诉你怎么虽然

为什么不使用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作为第一个参数和所述目标文件名作为第二。请注意,这个使用蟒蛇自己的网址检索库的urllib,如果因任何原因,你必须使用wget具体情况,你,你可以导入“OS”模块,并使用使用os.system(“命令行”)。

在UNIX可以通过键入“蟒scriptname.py&”在后台运行的脚本

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top