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

Php 设置cron作业以从结果中提取HTTP请求并创建/缓存文件,php,http,cron,Php,Http,Cron,首先感谢您提供的任何帮助。我对PHP有些陌生,这是我必须创建的第一个“Web服务” 目标是: 我需要从另一台服务器提取XML数据。该公司的API设置为您必须提供IP,因此您只能将数据从服务器拉到服务器,而不是从客户端拉到服务器。使用HTTP请求从API中提取数据…非常类似于YQL。(本质上,结构化查询位于URL中)。这个API还要求我的服务器每10-15分钟只ping一次他们的服务器,以减少服务器请求 我脑子里的逻辑想法是设置:一个cron作业,每10分钟运行一个PHP脚本。然后,PHP脚本将执

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

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

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

我的想法是在前3步中使用curl和fopen。我在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);
?>

我真的很感激在这方面的任何帮助。此外,如果您有时间请评论和解释您在任何代码示例中所做的事情以及原因……这将非常有帮助。我真的很想学习,而不仅仅是抓住一个片段就跑。所以,你的评论对我来说至关重要


谢谢

您可以使用更方便的功能来实现这一点,例如file\u get\u contents和file\u put\u 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头或类似的东西对该API进行任何特殊的身份验证)


您可以使用更方便的功能来实现这一点,例如文件获取内容和文件放置内容

将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头或类似的东西对该API进行任何特殊的身份验证)



不确定为什么这一回应被否决。这是绝对正确的,因为Mitch必须在这个过程中创建某种Xml2JSON功能。我想这只是在我的脑海里提出了另外几个问题。1.我是否需要在服务器上提前创建“my_json_cashe.json”文件?2.每次cron作业运行时,它都会覆盖json文件的内容吗?好的,我想我需要更多的帮助。:my_custom_xml_parsing_函数做什么?这是一个您将实现的函数,它将获取您的输入xml,将其解析为对您有用的数据结构,然后返回该数据结构。不确定此响应为何被否决。这是绝对正确的,因为Mitch必须在这个过程中创建某种Xml2JSON功能。我想这只是在我的脑海里提出了另外几个问题。1.我是否需要在服务器上提前创建“my_json_cashe.json”文件?2.每次cron作业运行时,它都会覆盖json文件的内容吗?好的,我想我需要更多的帮助。:my_custom_xml_parsing_函数做什么?这是一个您将实现的函数,它将接收您的输入xml,将其解析为对您有用的数据结构,并返回该数据结构。
    <?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);

    ?>