Ответ 1
Проблема была, по-видимому, с самим APC, а не с семафором.
Обновление до PHP 5.4.8 -1 ~ dotdeb.0 решило проблему как для nginx, так и для встроенных тестов сервера.
У меня есть следующий код, и семафор не заблокировал его, как ожидалось.
(я знаю apc_inc. Это не то, что я ищу.)
$semkey = sem_get(123);
sem_acquire($semkey);
$count = apc_fetch('count111');
if(!$count) $count = 0;
$count++;
apc_store('count111', $count);
sem_release($semkey);
за которым следует
ab -n 4000 -c 200 http://localhost/test.php
0 неудачных запросов.
но после этого apc_fetch('count111')
показывает только ~ 1200 просмотров
nginx на ubuntu 12.04 (64 бит), php 5.3.16 ~ dotdeb, php-fpm
Проблема была, по-видимому, с самим APC, а не с семафором.
Обновление до PHP 5.4.8 -1 ~ dotdeb.0 решило проблему как для nginx, так и для встроенных тестов сервера.