Search code examples
phpsemaphoreapc

php semaphore doesn't work


I've got the following code and the semaphore wouldn't lock it as expected.

(I'm aware of apc_inc. This is not what I'm looking for.)

$semkey = sem_get(123);
sem_acquire($semkey);

$count = apc_fetch('count111');
if(!$count) $count = 0;
$count++;
apc_store('count111', $count);

sem_release($semkey);

followed by

ab -n 4000 -c 200 http://localhost/test.php

0 requests failed.

but after that an apc_fetch('count111') shows only ~ 1200 hits

nginx on ubuntu 12.04 (64bit), php 5.3.16~dotdeb, php-fpm

  • update 1: works perfectly on Linux mint, 5.4.6~dotdeb, built in web server. I'm going to try the same machine with the same version with nginx.

Solution

  • The problem was, apparently, with the APC itself, not with the semaphore.
    Updating to PHP 5.4.8-1~dotdeb.0 has solved the problem for both nginx and built-in server test runs.