I used php script to parse remote xml file and print output on web page into a div. Since I need output have to be synchronized with currently playing track, I used Javascript to reload div content every 20sec. While testing the page I faced an issue with my hosting, and got message “IP Connection limit exceeded”, site was not accessible. I’ve changed IP to solve this. Is there a workaround to parse metadata without bumping the server and running into web hosting issues?
<script>
setInterval(function() {
$('#reload').load('current.php');
}, 20000);
</script>
Since a web page is a client-based entity, it is in nature unable to receive any data that it hasn’t requested. That being said, there are a few options that you may consider.
First, I don’t know what web host you are using, but they should let you refresh the page (or make a request like you are doing) more than once every 20 seconds, so I would contact them about that. A Denial of Service attack should be more like 2 or 3 times per second per connection. There could be a better answer for this that I’m just not seeing, but at first glance that’s my take on that.
One option you may want to consider is using a Web Socket, which is a new feature of HTML 5 enabling the Web Server to maintain an open connection between the Visitor’s Browser and send packets of data back and forth. This prevents the need for the browser to constantly poll the server every 20 seconds. Granted, these are new and I believe they only work in Safari and Chrome. I haven’t experimented with them but plan to in the future.
In conclusion, I don’t know of a better way than polling the server every so often to check for changes. Based on my browser’s XMLHttpRequest tab, this is how gmail looks for new messages. If your host won’t allow you more requests per time interval, perhaps decrease the frequency you are polling the server or switch to a different host.