我想每隔15秒从其他服务器动态获取数据xml。然后将xml数据转换为json并将其保存到我服务器上的新文件中。
这是我的jquery代码:
(function($){
function getData() {
$.ajax({
url: 'data.php',
type: 'GET',
dataType: 'json',
beforeSend: function () {},
success: function (response) {
console.log(response);
}
});
}
var refreshData = setInterval(getData, 15000);
getData();
})(jQuery);
这里是data.php文件中的代码。
// load class
<?php
require_once 'class/rii.class.php';
// get data
$data = new RII_Data( 'http://theotherservertoget/pri2.xml' );
// generate json
$data->generate_json();
这里是rii.class.php文件中的代码。
<?php
class RII_Data {
private $options = array();
function __construct( $url = '' ) {
$this->options['url'] = $url;
}
private function get_json( $url ) {
$xml_string = @file_get_contents( $url );
$xml_string = str_replace( array( "\n", "\r", "\t"), '', $xml_string );
$xml_string = trim (str_replace( '"', "'", $xml_string ) );
$xml = simplexml_load_string( $xml_string );
$json = json_encode( $xml );
return $json;
}
private function print_json( $json ) {
header('Content-Type: application/json');
echo $json;
exit;
}
public function generate_json() {
$json = $this->get_json( $this->options['url'] );
$this->print_json( $json );
}
}
运行js后我的服务器总是停机, 我犯了错误吗?
答案 0 :(得分:1)
var refreshData = setInterval(getData, 15000);
您正在使用预先加载方法每15秒刷新一次页面。我认为这是导致您的Web服务器消耗大量资源的问题
您应该只更新已更改的内容,而不是将所有xml重新转换为json
编辑:simplexml将整个xml树转换为会占用大量资源的对象。如果你可以摆脱它,使用字符串操作函数来完成工作,它会更好。
的问候,