saikiran saikiran - 7 months ago 14
PHP Question

check every request coming to apacheweb server

I have a weird requirement asked , to check time difference between each request and response

I have a PHP file (request.php) serving a image as it's response, so i have to check time difference between GET request.php and GET image request. for each and every request.

For example:

the time request.php is made lets say 12:40 AM

it will response a image, when image is inserted in a web page i get a image request say 12.42 AM.

so my requirement is to calculate time difference between request.php and image every time they hit my server.

I suggested to read Apache access-log but client want me to note request time for every request made and store some where and calculate average between each request on end of the day.

My idea is to read Apache-log and is there a way we can write a php script which will work for every incoming request and check it's timing, probably a custom access-log file.

Any Help!!

Answer

2:From your question, I gather that the requirement is to actually get the time that the image finally "shows up" on the visitor's browser?

If that is the case, then, well this may get technical pretty quick, depending how accurate the info should be, and also if you don't mind getting the said images via XMLHTTpRequest - via JavaScript. If that is the case, you can do the whole server-side thing as a pre-requisite, aditionally, set a custom response header, i.e:

header('x-imageID', $mysql_insert_id());

Then readfile('blah.jpg');

on the client-side, with the XMLHTTpRequest, set in the onload event another request to the server, with the image-id with e.g xhr.getResponseHeader('x-imageID') and the current time in milliseconds: new Date().getTime().

obviously you will need to set some info to distinguish the requests so that the server will only log for image requests, and update the records with the "update time" requests.

Hope it helps ;)