Here's how I solved it:
Client A leaves an open call ajax:: $.ajax(...).done(function myCallBack(){...});on the server side of PHP (session), A is blocked on semaphore, using sem_acquire($semaphore_A)and waiting.
Client B removes the semaphore $semaphore_Awith sem_remove($semaphore_A), thereby freeing A , which returns the client JS callback myCallBack().
, , shared-memory (, shm_attach()) .
, :
, , , (session_start()) (session_ write_ close()) - concurrency!