この記事の内容は、PHP インタビューに関する知識と経験を共有することです。必要な友人はそれを参照できます
memcache と redis の類似点と相違点
マルチスレッド、高スループットを使用でき、大規模な訪問に適しています
memcache は単純なキー/値構造のみをサポートします
memcache はデータを保持できず、データの再起動後にのみ使用できます。 loss
memcache はマルチスレッド操作をサポートしているため、データの整合性の問題を考慮する必要があります。Cas (チェック アンド セット) オプティミスティック ロックが使用されます
redis は単一形式であるため、秩序ある操作を保証できます。
- redis は、キー/値、リスト、セット、zset、dict などのさまざまなデータ構造をサポートしています。
- redis データは永続的に保存でき、データはディスクに保存でき、読み出すことができます。再起動時
- redisはデータバックアップ、つまりマスター/スレーブモードでのデータバックアップをサポートします
Webプロジェクト向けの高同時実行ソリューション
- 静的HTML、一般的に使用されるがめったに更新されないデータを静的化します
- 画像アプリケーションサーバーへの影響を避けるためにサーバーを分離すると同時に、
- データベースクラスター、ライブラリテーブルハッシュ
データベースに対して個別の構成の最適化、キャッシュ設定などを実行できます。クラスターは読み取りと書き込みの分離を実現し、データベースを向上させることができます。応答速度は通常、1 つのマスターと複数のスレーブ、または x マスターと y スレーブです。たとえば、書き込みを減らして読み取りを増やす場合、1 つのサーバーが書き込み操作専用になり、他のサーバーが読み取り操作に使用されます。これにより、読み取り/書き込みロックの影響を回避できます。ただし、書き込み操作の完了後、データを同期する必要があります。
-
データベースクラスターのもう1つの利点は、1つのデータベースサーバーがダウンしても、他のサーバーに完全なデータがまだ残っていることです
-
分散データベースでは、システム内に複数のノードがあり、各ノードが異なるタスク機能を実行します。ノードがハングアップすると、対応する機能を完了できなくなります。
-
データベースクラスターと分散データベースの違い。 1 つのノードでタスクが完了するまでに 1 時間かかり、そのようなタスクが 10 個あり、ノードが 10 個あるとします。分散データベースは、サブタスクの依存関係に関係なく、タスクを 10 個のタスクに分割できます。すべてのタスクは 1 時間後に完了します。データベース クラスター内の各ノードは完全なタスクを完了でき、各ノードに平均 10 個のタスクを実行できるため、すべてのタスクが 1 時間後に完了します。
-
SQL最適化
-
テーブル内のデータが多すぎる場合は、テーブルを分割し、ハッシュマッピングを使用することを検討できます
-
インデックス最適化
キャッシュ
-
アクセスを改善する速度
-
負荷分散、高同時実行性と大規模アクセスの問題を解決
-
CDN、ユーザーが最も近い CDN サーバーにアクセスして最速の応答を得ることが可能
-
データ圧縮
-
PHP
Magic Method
__set/__get はクラスに存在しない属性を処理します
-
__call/_callStatic は、クラスに存在しないメソッド/静的メソッドを呼び出すときにトリガーされます。 __callStatic 自体も静的メソッドとして宣言する必要があります
-
__toString オブジェクトを文字列出力に変換します
-
__invoke オブジェクトを実行する関数として使用します
-
require と include の違い
include関数: ファイルが読み取られ、内部のプログラムが実行されることを指定します。
-
require 関数: ターゲット ファイルの内容を読み取り、読み取られた内容で置き換えます。
-
include_once 関数: の実行中に。 script 指定したファイルをインクルードして実行します。この動作は include ステートメントと似ていますが、唯一の違いは、ファイルがすでにインクルードされている場合、再度インクルードされないことです。このステートメントの名前が示すように、このステートメントは 1 回だけインクルードされます。
-
require_once 関数: require ステートメントとまったく同じですが、唯一の違いは、ファイルが既にインクルードされているかどうかを PHP がチェックし、インクルードされている場合は、再び含まれることはありません。
-
include_once または require_once を使用すると、ファイルをロードする前に、ファイルがロードされたファイル テーブルにロードされているかどうかが最初に検索されるため、プログラムの効率が低下します
-
存在しないファイルを含めると、生成されるだけですファイルが存在する場合、致命的なエラーが直接スローされ、スクリプトは停止します。 Include は条件付き包含関数であり、require は無条件包含関数です。つまり、include または require の外側の層に if 条件がある場合、if が false の場合、include はそれをインクルードせず、ファイルは true の場合にのみインクルードされますが、require は、次のいずれかに関係なくファイルをインクルードします。それは本当か嘘か
リターン時に括弧を使用できないのはなぜですか?
php_fpm
php5 php7の違い
以上がPHP に関する知識と経験を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。