There are some technologies that let you subscribe to a server. I don't know exactly how to do it and this question on a similar subject suggests there aren't allot of people who have a clear cut answer. Hopefully it does get a good answer.
If you can afford more server side processing: what I would do on the php side would be to: on request from javascript; keep open a connection as long as possible with some kind of wait loop checking if the file has updated. Putting this loop on the php side would reduce packet traffic and increase server load. Eventually before php times out you want to return an answer so the browser would know to reopen it's connection this can be as big as the entire file or as small as an empty packet (an empty packet is still 64 bytes).
If you can afford a packet or two I don't know how performant you need your application to be. Just checking for the last updated header will save you from downloading the file every time. This post to a question on getting a files' last modified time stamp will help you; if you don't know how to write ajax to do this.
If you can't decide, checking for the header has the least chance of going horribly wrong. I would go for that first and then try the other methods if it's still too expensive. A hybrid option would be my next suggestion if that isn't good enough.