ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルのいくつかの興味深い違い

PHP_PHP チュートリアルのいくつかの興味深い違い

WBOY
WBOYオリジナル
2016-07-21 15:59:30904ブラウズ

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

char と varchar の違い:
Char は固定長で、varchar は可変長です。char の主な特徴は、格納方法が事前に割り当てられることです。 varchar のデータ長が変化すると、そのストレージのページ割り当てに影響します。
char と varchar2 は相反する結合であり、
varchar2 は char よりもスペースを節約しますが、char よりもわずかに効率が低くなります。効率性を高めたい場合は、ある程度のスペースを犠牲にする必要があります。これはデータベース設計でよく言われることです。「効率性のためにスペースをトレードする」とは、varchar2 は char よりもスペースを節約しますが、varchar2 列が頻繁に変更される場合、データの長さが毎回変更されると、「行の移動」(Row Migration) という現象が発生し、冗長な I/O が発生します。この場合、データベースの設計と調整では回避する必要があります。 varchar2 の代わりに char を使用する方が良いです


mysql_connect と mysql_pconnect の違い Excel php クラブ フォーラムの友人の原文の言葉を引用します:
php での mysql_pconnect() の実装:
実際には、mysql_pconnect()それ自体は多くの処理を行わず、唯一行うことは

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




以下は 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 には戻り値がありませんが、require はありません (おそらく、require の方が include よりも高速であるためです)。 )
$login = include('test.php');
if(! empty($login)){
echo "ファイルの組み込みに失敗しました";
}else{

ファイルを参照するには、require と include という 2 つの方法があります。 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 を使用できます





http://www.bkjia.com/PHPjc/317318.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/317318.html技術記事一重引用符 ' と二重引用符 " の違い: まず第一に、二重引用符は内容を前処理するため、一重引用符の方が二重引用符より効率的です。たとえば、「$value」は文字 $value を出力し、「$value」は文字を出力します。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。