es gibt einige lösungsvarianten.
am besten machst du ein unsichtbares frame, dass periodisch (alle 5 sekunden) den server fragt, ob sie jetzt dran kommen.
das php script erstellt für jede neue ip einen neuen eintrag in einer db table mit einem timestamp des requests. bei jeder nachfrage der client's ob sie endlich dran kommen, hältst du diese nachfrage in form eines zweiten timestamps fest (um später festzustellen, ob dieser user überhaupt noch wartet).
die webcam sollte jedem user nur eine maximale zeit gehören.
bei einer längeren inaktivität (aktivität = 3. timestamp (start der kontrolle) + 4. timestamp (letzter command) feld) des aktuellen webcam users sollte dieser die kontrolle verlieren.
die warteschlange natürlich als FIFO implementieren, wenn die webcam frei ist, kommt der mit dem kleinsten timestamp dran.
bei jedem request auf das php script kannst du noch kurz checken, ob alle einträge in der db noch aktuell sind (mit timestamp nr. 2).