PHP Atom Server

Share this article

While out hunting for someone who’s implemented some kind of timeout mechanism when using XMLHttpReqeust, ran into isolani’s PHP Atom Server (serves ATOM XML), which I guess is part of the isoTope framework he’s working on, as well as a Javascript ATOM client (which uses XMLHttpRequest).

Interested to see he’s using the php://input stream. In fact there is another way to access the raw POST data in PHP, which will work on older PHP versions, using the global variable $HTTP_RAW_POST_DATA. Unless you have always_populate_raw_post_data switched on in php.ini, this global only exists if an HTTP POST was made without a Content-Type of “application/x-www-form-urlencoded” (which is the default content type for a normal form). Believe you also need to declare it or access it via the $GLOBALS array, unlike other variables such as $_GET and $_SERVER e.g.;


function getRawPost() {
global $HTTP_RAW_POST_DATA;
return $HTTP_RAW_POST_DATA;

// or
# return $GLOBALS['HTTP_RAW_POST_DATA'];
}

Doesn’t bring me any closer to implementing timeouts with XmlHttpRequest though ;) Got some wierd stuff happening now – IE calls the XmlHttpRequest.onreadystatechange callback both for sync and async requests but if you call the abort() method, prepare to kill -9 (the Windows way). Meanwhile Mozilla seems to ignore onreadystatechange completely, when making sync requests, which doesn’t leave much room for a timeout.

Some other interesting links along the way;

Cross-Browser XMLHttpRequest – provides a partial XMLHttpRequest implementation for Opera

libXmlRequest – very interesting implementation, using a pool of XMLHttpRequest objects. But still doesn’t seem to answer the timeout mystery.

Also from the libXmlRequest author: engine for web applications – something in the same ball park as ScriptServer. Personally turned me off with “too many” layers of abstration and excessive XML but perhaps that’s me – transparency is relative.

[Update]
Looking in all the wrong places! Christian has the answer with Livesearch – use Window.setTimeout()

Harry FuecksHarry Fuecks
View Author

Harry Fuecks is the Engineering Project Lead at Tamedia and formerly the Head of Engineering at Squirro. He is a data-driven facilitator, leader, coach and specializes in line management, hiring software engineers, analytics, mobile, and marketing. Harry also enjoys writing and you can read his articles on SitePoint and Medium.

Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week