设置cron作业以从结果中提取HTTP请求和创建/缓存文件

时间:2012-03-24 21:06:32

标签: php http cron

首先感谢您提供的任何帮助。我对PHP有些新意,这是我必须创建的第一个“Web服务”。

目标: 我需要从另一台服务器提取XML数据。设置该公司的API,以便您必须提供IP,因此您只能将数据从服务器提取到服务器而不是客户端到服务器。使用HTTP请求从API中提取数据...非常类似于YQL。 (实质上,结构化查询位于URL中)。此API还要求我的服务器每隔10-15分钟才ping他们的服务器,以减少服务器请求。

我脑子里的逻辑思想是设置:每10分钟运行一个PHP脚本的cron作业。然后PHP脚本将执行以下操作: 1.发出HTTP请求 2.打开现有文件或创建一个(在我的服务器上) 3.从API返回返回的XML数据并写入新打开的文件。 4.将该XML转换为JSON。 5.保存JSON 6.缓存JSON文件 7.停止

我的想法是使用curl和fopen进行前3个步骤。我发现了一个基本脚本,可以在PHP.net上执行此操作(如下所示)。在那之后,我几乎迷失了如何继续前进。

<?php

$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

我真的很感激任何帮助。此外,如果您有时间请注释并解释您在任何代码示例中所做的事情以及为什么......这将会帮助很多。我真的想学习不只是抓住一个片段然后跑。所以,你的评论对我来说至关重要。

感谢!!!

1 个答案:

答案 0 :(得分:3)

您可以使用更方便的函数执行此操作,例如file_get_contents和file_put_contents。

将XML转换为JSON是一种含糊不清的语句,因为XML数据结构不一定直接映射到JSON,因为XML可以包含属性等等。因此,您必须弄清楚如何在您的拥有取决于您的数据结构。您可以使用SimpleXML PHP模块(http://php.net/manual/en/book.simplexml.php)或DOM模块(http://www.php.net/manual/en/book.dom。 PHP)。

在较高级别,您的代码可能看起来像这样:(这假设您不需要使用HTTP标头或类似的任何特殊身份验证)

    <?php

    $remote_data_xml = file_get_contents("http://www.example.com/file.xml");

    $parsed_data = my_custom_xml_parsing_function($remote_data_xml);
    $parsed_data_json = json_encode($parsed_data);

    file_put_contents("my_json_cache.json", $parsed_data_json);

    ?>