Оказывается в PHP нет возможности закрыть семафор неблокирующим способом: то есть если он открыт, то закрыть и вернуть один статут, а если закрыт, то вернуть другой. Всем желающим делать такое предлагается использовать разделяемую память и семафор для синхронизации доступа к ней.
Проголосовал за
фичу в их треккере.