問題タブ [opcache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP OPcacheが有効かどうかを判断する方法は?
ubuntu 12.04 LTS
サーバー (で実行apache 2.4.7
されている) でopCache を有効にしようとしていますPHP Version 5.5.10-1+deb.sury.org~precise+1
。
何かを開始する前に、opCache がデフォルトで無効になっており、手動で有効にする必要があるという非常に関連性の高い投稿を読みました。
私は php.ini に入り、 のテキストがなくopcache.so
、opcache に関連するすべてがコメントアウトされていることを発見しました。このような:
その人はそれが無効になっていると言ったので、これは問題ありません。しかし、相談するphpinfo();
と、次のように表示されます(私の理解に基づいて、opCacheはすでに使用されていることがわかります)。
私の opcache は有効化され、使用されていますか?どうすれば確認/確認できますか?
apache - opcache.so の読み込みに失敗しました: opcache.so: 共有オブジェクト ファイルを開けません
apache2 ログ ファイルで Opcache に問題があります
エラーは次のとおりです:opcache.soのロードに失敗しました:opcache.so:共有オブジェクトファイルを開けません
あなたはなにか考えはありますか ?
Opcache を使用して Debian スクイーズ php 5.4 を実行しています
ありがとう
php - スクリプトが opCache にヒットしたか、ヒットしなかったか?
スクリプトがopCacheにヒットしたかどうかをPHPの内部から判断することは可能ですか?
phpinfo()
約数からいくつかの統計を見つけることができることを知っています
- キャッシュ ヒット
- キャッシュミス
- キャッシュされたスクリプト
- キャッシュされたキー
問題は、これが単なる統計であるということです。私がしたいのは、次のことです。スクリプト内からいくつかのスクリプトを実行するtest.php
と、opCache によってヒットまたはミスされたかどうかがわかります。そうすることは可能ですか?
php - opcacheを使用してPHPで静的データをキャッシュする
PHP サイトのすべての Web ページで使用できるようにする必要がある文字列変数が 100 個まであります。実行時にデータが変更されることはありませんが、将来的には複数のデータ セットが必要になり、ページ リクエストで使用中のデータを切り替える必要があります。文字列の長さは 5 ~ 600 文字です。現在、次のようなデータを含むファイルを含めています。
opcache を使用しています。このアプローチは、opcache からどの程度の利益を得るでしょうか?
私はこの答えを見ました。キャッシングの利点がキー検索を行う価値がある場合は、連想配列の使用に変更できます。ただし、変数を宣言するよりも、静的配列フィールドを持つクラスを使用する方が私の状況に適しているかどうかは明確ではありません。
たぶん、静的変数を持つ関数は良い考えですか? これは静的クラス フィールドと同じですか、それよりも優れていますか、それとも劣っていますか?
たぶん、各文字列の変数ではなく関数ですか?特定のページですべての文字列が使用されていない場合 (これはよくあることです)、これはより良いことでしょうか?
最善の解決策は何ですか?すべてのページでデータが必要になるため、ディスク/データベースなどからの読み取りを避けて、できるだけ効率的にしたいと考えています。
php - php5.5.11 の opcache_is_script_cached 関数
最近、「スクリプトが opCache にヒットしたかどうかを確認する方法はありますか」という質問をしましたが、答えを見つけることができませんでした。今、Php5.5.11のchangelogを見ていると、新しい関数が
OPキャッシュ:
関数 opcache_is_script_cached() が追加されました。
が追加されました。名前に基づいて、私が望んでいることを正確に実行していますが、問題は、この関数に関するドキュメントが見つからないことです。
この関数が何をするのか正確に教えてもらえますか? 勝手な推測はご遠慮ください。
php - AWS EB PHP サーバーに Opcache をインストールした後の無効な UTF8 文字
CakePHP 2.4.2 を使用して、RDS データベースを備えた Amazon Elastic Beanstalk サーバーで CMS サイトを実行しています。昨夜から、ログにエラーが表示され、特定のページが読み込まれません (500 エラー)。
同じ 'utf8' 文字のセットが表示されることがありますが、エラー ログにはさまざまな文字列が多数記録されているため、毎回同じエラーですが、同じ悪い文字列ではありません。ログにある他の文字列の一部を次に示します。
昨夜仕事を離れる前に、ebextension 構成をプッシュして、Zend Opcode Caching をサーバーにインストールしました。これがエラーの原因であるという証拠はありませんが、エラーを引き起こす可能性のあるサーバーに対して行った唯一の変更のようです。エラーが発生する前に行われた最後の変更でした。午後 5 時頃にコードをプッシュすると、午後 6 時頃にログにエラーが表示されるようになりました。
参考までに、opcache を有効にするために使用した構成を次に示します。
同じ設定で問題なく動作しているopcacheパッケージなしで、実稼働環境に複数のサーバーがあり、ローカルのテストボックスでもそのようなエラーを再現できませんでした。
opcache である種のあいまいなバグを見つけた可能性がありますか、それとも私が見ているものについてもっと論理的な結論がありますか? これらのエラーは私のコードの奥深くで発生しているため、どうすればデバッグできるのか途方に暮れています。私は自分のコードを検索して、コード自体に悪い文字がないことを確認しましたが、それを超えて、私は暗闇の中でちょっと突っついています.
アップデート:
これが UTF8 文字列の不適切な strtolower() 変換によって引き起こされているかどうかを調べましたが、関連するクエリの 1 つにユーザーが入力した値が含まれておらず、どの条件も UTF8 文字列を使用していないため、それが可能であるとは思えませんそれに追跡されます。失敗しているクエリの 1 つは、ログイン コントローラーで利用可能なすべてのリージョンのルックアップです。
php - APC -> APCu / OPCache、パフォーマンスが悪い
今日更新したm3.xlarge
EC2 インスタンスがありPHP 5.5.11
ます。
今回のアップデートで、 で上書きphp55-pecl-apc
されましphp55-pecl-apcu
た。
読んで実験した後、 で戻すことができるキー値ストアを除いて、APC
は で置き換えられたと理解しています。OPCache
APCu
私の設定を合理的に見えるものに微調整した後、ログイン中にWordpressを使用すると、少なくとも300〜900ミリ秒遅くなりました(フロントエンドはワニスを介してキャッシュされ、完璧に動作します...しかし、管理者を使用している場合意図的にキャッシュされず、罪のように遅い)。
各ステップのサンプルサイズを小さくして、アップグレードしながら一連のベンチマークを行いました。私が進むにつれて、それはますます悪化しました。
- APC (アップグレード前)
-->
- OPCache + APCuなし
-->
- OPCache + APCu + APCu 用 WP プラグイン
現在、私は OPCache を使用しているだけで、APCu は使用していません。
- どうすれば同じパフォーマンスを達成できますか? 管理インターフェイスが気に入りました。その速さが気に入りました。正直なところ、これがどのように改善されたかはまったくわかりません。本当に気のめいるようです...私が気付いていないスーパーライブラリがそこにない限り。確かに私が持っているものではないか、うまく構成されていない可能性があります。
- #1 に対する答えが「ボールのように構成した」であると仮定すると、これを見て、これが妥当かどうかを確認していただけますか?
私のセットアップでは、最新のワードプレスといくつかの大きなプラグインを使用していますが、それらは重要であるため外すことができません。幸いなことに、ほとんどの作業はワニスで処理できます。ウェブサイトのルートに 4 つのコア、16GB のメモリ、約 10,000 個のファイルがあります。また、本当の筋金入りのアプリやワードプレス以外のものはありません。これはかなりバニラのセットアップです。役に立ちそうなものは以上だと思います。
構成:
php - PHP5.5 フォルダーごとの Opcache キャッシュ
1 つの Web サーバーを PHP 5.5 に切り替えたところ、デフォルトで Zend Opcache が付属しています。APC と同様に、構成が非常に簡単であることがわかりました。特定のフォルダー内のファイルのみをキャッシュするように何らかの方法で定義する必要がある Opcache の問題。php.netで見つかりました
opcache.blacklist_filename 文字列
高速化され、1 行に 1 つずつ。ワイルドカードが許可されており、プレフィックスも指定できます。セミコロンで始まる行はコメントとして無視されます。
しかし、ウェブサイトなどの 150 のフォルダーがあり、特定のフォルダーのみをキャッシュするように定義するにはどうすればよいですか? 私の見解としては、不要なフォルダーのリストをブラックリストファイルに入れることでキャッシュを防ぐことができると思います:
php - Zend OPcache の「num_cached_keys」統計は何を意味しますか?
によって返されるデータ ポイントには次のものopcache_get_status()
があります。
キャッシュされたスクリプトの数は正しく、理解できます ('scripts'
戻り値の一部を数えることで確認できます)。しかし、「キー」とは正確には何を指すのでしょうか? Zend OPcache はキー/値ストアとして編成できると思います。その場合、スクリプトとキーの間には 1 対 1 の関係が必要です。
- OPcache にはスクリプト以外のものも保存されます。
- 一部のスクリプトは、2 つ以上のキーを使用して保存されます
OPcache で使用されるキーを一覧表示するための API はありませんでした。