アプリケーションに$ _GET変数のエラーが発生しましたが、Windows 2008 R2に4つのCPUコアがあります。Windowsマルチコアサーバーでphp7が失敗する
私はこの簡単なコードをテストするために作成しました。
<?php
if(!isset($_GET)){
error_log("_GET is not set");
echo "ERROR";
}else{
echo "OK";
}
そして、約2500rpsの15スレッドで呼び出す簡単なJMeterテストを作成しました。
私はそれを1つのコアCPUで実行すると、エラーなしで何百万もの要求に対して動作しますが、4つのCPUを持つサーバーで実行すると、約10,000回の要求の後で$ _GET変数は設定されなくなります。
また、$ _POST、$ _SERVER、$ _COOKIE、$ _SESSIONでテストを繰り返しました。そして結果は同じでした。
PHPをバージョン5.6にダウングレードすると、4CPUで正常に動作します。
Apache CPUアフィニティを1つのCPUに設定すると、それも機能します。
実行中: PHP/7.0.8でApache/2.4.18(Win64)を実行しています。 Vultr.comでホストされている、CPUが4個でRAM容量が4GBのWindows 2008 R2を搭載したVMで、SSD。
PHP 7の既知の問題ですか?
私はバージョン7.0.8で64ビットのスレッドセーフを使用しています。[http://windows.php.net/download#php-7.0](http://windows.php.net/download#)からダウンロードしてください。 php-7.0)。そしてApache LoungeのApache。 –