2

我制作了一个从 API 检索信息的页面。从他们的服务器获得响应大约需要 10-20 秒。请求是通过 PHP 代理从 js 完成的,以避免跨域问题。我想知道,由于数据不喜欢经常更改(它是国会议员的数据),我可能会每天发出请求并将其存储在我的服务器中,以便页面加载更快,我可以提供一个“刷新”按钮以防用户需要它。怎么可能呢?我刚刚开始进行 Web 开发,我发现这是几种不同语言和框架的必要知识,现在我正在研究 js,但是我得到了这个 PHP hack 来满足我的请求,底线我对 PHP 几乎一无所知.

[编辑]好的,我让 cron 工作了!现在我如何从 php 脚本中保存 document.xml?我试过了:

$c_t = fopen('file.xml', 'ab+');
fwrite($c_t, date('Y-m-d H:i:s')."\n\n"); //add timestamp to theverbose log
fwrite($c_t,$xml);

在 `curl_close($session); 之前插入

该文件已保存,但仅带有时间戳...

这就是我得到的...

<?php
// PHP Proxy --- only 'GET'
// Based on script from yahoo's example @ http://developer.yahoo.com/javascript/samples/proxy/php_proxy_simple.txt
// tweaked by vk
//  hostname - just base domain
define ('HOSTNAME', 'http://www.camara.gov.br');

// Get the REST call path from the AJAX application - js;
$path = $_GET['yws_path1'];

// assign yo url
$url = HOSTNAME.$path;

//Open the Curl session
$session = curl_init($url);

// Don't return HTTP headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_HTTPGET, true);

//set user agent, that did it!!! copied from browsers...
curl_setopt($session, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36');

// The web service returns XML. Set the Content-Type appropriately
header("Content-Type: text/xml");

// Make the call
$xml = curl_exec($session);

// done, shutDown.
curl_close($session);
?>
4

1 回答 1

4

如果您使用的是 Mac 或 Linux;您可以安排您的代码通过 cron 执行。PHP 不必由浏览器运行。

php -f yourcode.php > results.txt

'man php' 获取更多信息...和 ​​'man crontab -s 5' 获取有关使用 cron 调度的详细信息

于 2013-10-08T00:53:08.397 回答