ホームページ > php教程 > php手册 > PHP のいくつかの興味深い違い

PHP のいくつかの興味深い違い

WBOY
リリース: 2016-06-13 12:35:45
オリジナル
939 人が閲覧しました

一重引用符 ' と二重引用符 " の違い:
まず第一に、二重引用符はコンテンツを前処理するため、一重引用符は二重引用符よりも効率的です。
例: '$value '出力文字 $value; "$value" は変数 $value の値を出力します。

char と varchar の違い:
char は可変長です。主な特徴は、varchar のデータ長が変更されると、そのストレージのページ割り当てに影響を与えることです。
char と varchar2 は相補的なものです。 varchar2 は char よりもスペースを節約しますが、効率性は char よりわずかに低くなります。つまり、データベース設計では、「効率性のためにスペースを犠牲にする必要があります。 ."
varchar2。char よりもスペースを節約できますが、varchar2 列が頻繁に変更され、変更されるデータの長さが毎回異なる場合、「行移行」 (行移行) 現象が発生します。この場合、varchar2 の代わりに char を使用する方がよいでしょう。これはデータベースにとって冗長な I/O を引き起こすためです。と mysql_pconnect

Excel php クラブ フォーラムからの引用:
PHP での mysql_pconnect() の実装方法: 実際、mysql_pconnect() 自体は多くの処理を行いません。
mysql_pconnect() と mysql_connect() の違い:

CGI モード:
When php cgi モードで実行されます。pconnect と connect に基本的に違いはありません。cgi モードでは、各 PHP アクセスがプロセスを開始し、アクセスが完了するとプロセスが終了し、すべてのリソースが解放されます。Apache モジュール モードの場合: 違いは、PHP が Apache モジュール モードで実行される場合、Apache はプロセス プールを使用するため、httpd プロセスが終了するとプロセス プールに戻されます。つまり、pconnect で開かれた mysql 接続リソースはプロセス プールに戻されません。
これは、Apache への同時アクセスが多くない場合、pconnect を使用することで、DB に繰り返し接続する時間を節約します。
ただし、Apache への同時アクセスが多い場合、以前の httpd プロセスによって占有されていた mysql 接続が閉じられないことが原因である可能性があります。
例:
mysql 接続の最大数が 500 に設定され、Apache への最大同時アクセス数が 2000 に設定されている場合
すべてのアクセスにはデータベースへのアクセスが必要であり、操作時間は比較的長いと想定します。
httpd に対する現在の 500 リクエストはまだ終了していません。後続の httpd プロセスは mysql に接続できません。 mysql 接続の最大数に達しているため) 現在の 500 の httpd プロセスが終了するか、再利用される場合にのみ、mysql に接続できます。
実際、これは、xgy_p のテストでも簡単に説明できます。操作は比較的単純で、pconnect は connect よりもはるかに効率的で、jsp を使用した接続プールの速度に近いため、
DB 操作が複雑な場合は httpd プロセスを継続的に再利用できます。 httpd は多くの同時プロセスをフォークするため、時間がかかります。最初に生成された httpd プロセスは DB 接続を解放しないため、後で生成された httpd プロセスは DB に接続できなくなります。これは、他の httpd プロセスの mysql 接続が切断されるためです。たとえば、最初の 1,000 件の同時接続テストでは、ほとんどすべての接続がタイムアウトしました。これが原因です。純粋な DB 接続プールを使用します。jsp 接続プールを使用すると、他の接続が使い果たされて再利用されるのを待つことができるため、mysql 接続の上限に達して接続できなくなるという問題は発生しません。 🎜> したがって、同時アクセス量が高くない場合は、pconnect を使用することで簡単にアクセス速度を向上させることができますが、同時実行量が増加した後、再度 pconnect を使用するかどうかはプログラマーの選択によって異なります。
私の個人的な意見では、PHP は次のようになります。実際には mysql 接続に接続プールを使用しませんが、pconnect は使用しません。Apache のプロセス プールを借用しているだけなので、同時アクセス量が多い場合、pconnect は DB へのアクセス効率を向上させることができません。
現時点では、同時実行の量が多い場合は、


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 と include を使用します。 2 つの方法により、使用上の柔軟性が異なります。

require は require("MyRequireFile.php"); のように使用されます。この関数は通常、PHP プログラムの先頭に配置され、PHP プログラムが実行される前に、まず require で指定されたファイルを読み込み、それを PHP プログラムの Web ページの一部にします。このようにして、よく使われる機能を Web ページに導入することもできます。

include は include("MyIncludeFile.php"); のように使用されます。この機能は通常、フロー制御の処理部分に配置されます。 PHP プログラムの Web ページは、インクルード ファイルを読み取るときにのみ読み取ります。これにより、プログラムの実行処理を簡略化することができる。

isset() と empty() の違い
どちらも変数のテストに使用されますが、isset() は変数に値が割り当てられているかどうかをテストし、empty() は割り当てられた変数をテストします。値が割り当てられているかどうか。

変数に値が割り当てられていない場合、PHP で参照することは許可されますが、変数に null 値が割り当てられている場合は、$foo="" または $foo=0 という通知が表示されます。または $foo= false の場合、empty($foo) は true を返し、isset($foo) も true を返します。つまり、null 値を代入しても変数の登録は解除されません。

変数の登録を解除するには、unset($foo) または $foo=NULL

を使用できます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート