通过PHP重复从站点检索数据

时间:2009-11-09 03:46:32

标签: php mysql file csv download

访问http://www.example.net时,会下载包含该网站最新数据的CSV文件。我想让我的网站http://www.example.com每小时访问http://www.example.net,以获取最新信息。

然后,我想使用CSV文件中存储的更新信息来比较以前CSV文件中数据的更改。我显然不知道最好的攻击计划是什么,所以任何帮助都会受到赞赏。我只是在寻找一个如何进行的概述,但是越多的信息越好。

顺便说一句,我正在使用LAMP捆绑包,因此首选PHP和mySQL解决方案。

3 个答案:

答案 0 :(得分:1)

我认为,处理此问题最简单的方法是每小时运行一次cron作业(如果是在Windows上运行预定任务),请使用curl或{{下载CSV 1}}(manual)。下载CSV后,您可以在MySQL数据库中导入新数据。

CSV应该在每一行都有某种时间戳,这样您就可以轻松地分离新旧数据。

同样处理XML会比纯CSV更好。

更好的设置方法是在file_get_contents上创建网络服务,并从http://www.example.com实时更新。但它要求您访问这两个网站。

答案 1 :(得分:0)

根据您正在使用的操作系统,您正在查看计划任务(Windows)或cron作业(* nix)以启动服务/应用程序,该服务/应用程序将提取新CSV并将其与旧版本进行比较副本。

答案 2 :(得分:0)

你肯定想要去一个cron工作的路线。我不确定你想要对差异做些什么,但是,如果你只想要一封电子邮件,这里有一个潜在的(和简化的)选项:

wget http://uri.com/file.txt && diff file.txt file_previous.txt | mail -s "Differences" your@email.com && mv file.txt file_previous.txt

从命令行单独尝试此命令(我猜你正在使用* nix框),看看你是否能让它运行起来。从那里,我将其保存到您要保存CSV文件的目录中的shell文件。

cd /path/to/directory
vi process_csv.sh

并添加以下内容:

#!/bin/bash

cd /path/to/directory
wget http://uri.com/file.txt
diff file.txt file_previous.txt | mail -s "Differences" your@email.com
mv file.txt file_previous.txt

保存并关闭文件。使新的shell脚本可执行:

chmod +x process_csv.sh

从那里开始调查cronjob路线。它可以像检查您是否可以编辑crontab文件一样简单:

crontab -e

幸运的是,您将能够输入您的cronjob并保存/关闭文件。它看起来如下所示:

01 * * * * /path/to/directory/process_csv.sh

我希望你觉得这很有用。