You don't have a lot of options here.
Since you are using a stateless protocol, you cannot push the updated event change directly to a client. The client has to go ahead and request that themselves. If you use something like AJAX, at least you can make it look flawless in the access.
So in a diagram type of description:
Client A retrieves data
Client B retrieves data (client A and client B see the same data)
Client B modifies data
Client B retrieves data (client A sees original data, client B sees modified data)
Client A retrieves data (client A and client B see the same data)
No matter what you do, you'll need to consume throughput in order to make all client's see the same data. If they refresh the page or if you use AJAX to determine the new data, no matter which the case they need to access the script to generate the data again. This is simply the behaviour of using a stateless protocol. The server cannot force the client (or even request it for that matter) to update.
PHP wouldn't be the best solution for this; it works fine in a server level (where I have the php interpreter), but you could create a socket program to listen and connect to another PHP page that establishes as a socket server. Then pump messages through and displays. Works good on cli, not so much in browsers as even flushing doesn't really work the way it used to. A better option for that would be java or C# using an actual gui application and can respond to events easily. No matter what though, you need to consume throughput to get the message through.