24
次のコードがあり、セマフォーは期待通りにロックしません。phpセマフォーが機能しない
(私はapc_incの意識だ。これは私が探しているものではありません。)
ab -n 4000 -c 200 http://localhost/test.php
0要求が失敗したことで、その後
$semkey = sem_get(123);
sem_acquire($semkey);
$count = apc_fetch('count111');
if(!$count) $count = 0;
$count++;
apc_store('count111', $count);
sem_release($semkey);
。
が、その後apc_fetch('count111')
は、Ubuntuの12.04(64ビット版)でのみ〜1200本のヒット
nginxの、PHP 5.3.16〜dotdeb、PHP-FPM
- 更新1を示しています。完璧に動作しますがLinux mint、5.4.6〜dotdeb、Webサーバーに組み込まれています。私はnginxと同じバージョンで同じマシンを試してみるつもりです。
私は、ロックされたブロックの中に 'apc_inc'コールを入れようとしましたが、4000回実行されました。 – Alex
私の知る限り、PHPセマフォは共有メモリとリソースをロックしています。コードブロックではありません。 私はそれがPHP共有メモリ関数で動作すると信じています – Bnaya
私はsem_getが必要なすべてのリソースを初期化し、PHPのソースコードがそれを確認していると思います。彼らはposixのセミットへの直接の呼び出しを持っている、そこから引き継ぐ。また、セマフォは、**メモリを共有しない**プロセスを同期するためのものです。 – Alex