ホームページ >バックエンド開発 >PHPチュートリアル >PHP の興味深い違いは何ですか?
一重引用符 ' と二重引用符 " の違い:
まず第一に、二重引用符は内容を前処理するため、一重引用符の方が二重引用符より効率的です。
例: '$value' 出力文字 $value ; "$value" 出力変数 $value の値。
char と varchar の違い: char は固定長であり、varchar は可変長です。 char の主な特徴は、varchar のデータ長が変更されると、その格納方法が事前に割り当てられることです。
char と varchar2 は相反する一体性であり、
varchar2 は char よりもスペースを節約しますが、効率が若干劣ります。これはデータベース設計でよく言われることですが、varchar2 は char よりもスペースを節約できますが、varchar2 列が頻繁に変更され、変更されるデータの長さがそれぞれ異なる場合があります。この場合、冗長 I/O を引き起こす「行移行」現象を回避する必要があります。この場合、varchar2 の代わりに char を使用することをお勧めします。
mysql_connect と mysql_pconnect の違い。
Excel php クラブ フォーラムの友人の元の言葉を引用します:
php での mysql_pconnect() の実装:
実際、mysql_pconnect() 自体はあまり処理を行わず、アクティブに閉じることだけを行います。 php の実行が終了した後。
Mysql_pconnect() と mysql_connect() の違い:
CGI モードでの実行時:
CGI モードでは、pconnect と connect に基本的に違いはありません。各 php アクセスはプロセスを開始し、アクセスが完了するとプロセスは終了し、すべてのリソースが解放されます。
Apache モジュール モードの場合:
違いは、Apache がプロセス プールを使用するため、php が Apache モジュール モードで実行されることです。 , httpd プロセスはプロセスプール終了後に元に戻されます。これにより、pconnect で開かれた mysql 接続リソースが解放されることも防止されるため、次の接続要求があるときに再利用できます
これにより、Apache の同時アクセスが可能になります。 pconnect を使用することで、PHP は DB に繰り返し接続する時間が節約され、アクセス速度が速くなります
ただし、Apache の同時アクセス量が大きい場合は、これを使用すると理解しやすいはずです。 pconnect の場合、mysql 接続が以前の httpd プロセスによって占有されていることが原因です。close しないと、mysql が接続の最大数に達したため、後続の一部のリクエストが満たされない可能性があります。例:
mysql 接続の最大数が次の場合。 500 に設定され、Apache への最大同時アクセス数は 2000 に設定されます。
前提 すべてのアクセスには DB へのアクセスが必要であり、操作時間は比較的長くなります。
現在の 500 の httpd リクエストが完了しない場合...後続の httd プロセスは mysql に接続できません (mysql 接続の最大数に達しているため)。mysql に接続できる前に、現在の 500 の httpd プロセスのみを終了するか再利用する必要があります。 xgy_p テストでは、操作が比較的単純な場合、pconnect は connect よりもはるかに効率的であり、現時点では httpd プロセスを継続的に再利用できるため、JSP 接続プールを使用するのと同じくらい高速であることがよくわかります。 DB 操作が複雑で時間がかかる場合、httpd は多くの同時プロセスをフォークし、最初に生成された httpd プロセスが DB 接続を解放しないため、後続の生成された httpd プロセスが DB に接続できなくなります。他の httpd プロセスの接続は再利用されません。したがって、多くの接続タイムアウトが発生します。たとえば、最初の 1000 件の同時接続テストでは、ほとんどすべての接続タイムアウトがこの理由によるものでした。純粋な DB 接続プールでは、JSP 接続プールは他の接続が使い果たされて再利用されるのを待つため、mysql 接続の制限に達して接続できないという問題は発生しません。訪問数はそれほど多くないため、pconnect を使用するとアクセス速度が向上するだけですが、同時実行の量が増加した後は、pconnect を再度使用するかどうかはプログラマーの選択によって異なります
私の個人的な意見では、現在、php は実際には mysql に接続していません。接続プールを使用する場合、pconnect は Apache のプロセス プールを借用するのと同じであるため、同時アクセス量が多い場合、pconnect は確かに jsp ほど効率は向上しません。現状、同時実行量が多い場合は、個人的には mysql_connect を使用することをお勧めします
include と require の違い
以下は phpchina.cn からの抜粋
php の require() のパフォーマンス include() に似ています。違いは、include() の場合は include() が実行されるたびにファイルを読み取って評価する必要があるのに対し、require() の場合はファイルが 1 回だけ処理されることです (実際、ファイルの内容が require() ステートメントに置き換わります)。 。つまり、これらの命令のいずれかが含まれるコードや、複数回実行される可能性のあるコードがある場合は、require() を使用する方が効率的であることを意味します。一方、コードが実行されるたびに異なるファイルを読み取る場合、または一連のファイルを反復処理するループがある場合は、含めるファイルの名前の変数を設定できるため、 include() を使用します。 、および引数が include() のときにこの変数を使用する場合。
include 実行時に、インクルードされたファイルにエラーが発生した場合、プログラムはすぐには停止しませんが、require の場合はプログラムがすぐに終了し、実行されなくなります。
include はループ内で使用できますが、require は使用できません。
以下は ricky からの引用です
1、require は無条件の包含です。つまり、require がプロセスに追加されると、条件が true であるかどうかに関係なく、require が最初に実行されます
これはもう適用できません。 require には、
if($ a = 1){
$file = '1.php';
}else{
$file = '2.php'
require($file; );
2、インクルードされたファイルが存在しないか構文エラーがある場合、require は致命的ですが、include はそうではありません
3、include には戻り値がありますが、require はありません (おそらく require が include よりも高速であるため)
$login = include('test.php');
if(!empty($login )){
echo "ファイルの組み込みに失敗しました";
}else{
echo "ファイルの組み込みに失敗しました"
: を要求し、含めます。 2 つの方法により、使用上の柔軟性が異なります。
require は require("MyRequireFile.php"); のように使用されます。この関数は通常、PHP プログラムの先頭に配置され、PHP プログラムが実行される前に、まず require で指定されたファイルを読み込み、それを PHP プログラムの Web ページの一部にします。このようにして、よく使われる機能を Web ページに導入することもできます。
include は include("MyIncludeFile.php"); として使用されます。この機能は通常、フロー制御の処理部分に配置されます。 PHP プログラムの Web ページは、インクルード ファイルを読み取るときにのみ読み取ります。これにより、プログラムの実行処理を簡略化することができる。
isset() と empty() の違い
どちらも変数のテストに使用されますが、isset() は変数に値が割り当てられているかどうかをテストし、empty() は値が割り当てられている変数が空かどうかをテストします。
値を割り当てずに変数を PHP で参照する場合は許可されますが、変数に空の値 ($foo=""、$foo=0、または $foo=false) が割り当てられている場合は、通知プロンプトが表示されます。の場合、empty( $foo) は true を返し、isset($foo) も true を返します。つまり、null 値を代入しても変数の登録は解除されません。
変数の登録を解除するには、unset($foo) または $foo=NULL を使用できます
上記では、PHP チュートリアルの内容を含め、PHP と PHP の興味深い違いをいくつか紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。