検索
ホームページバックエンド開発PHPチュートリアル新バージョンのPHP 5.3の詳細分析_PHPチュートリアル

新バージョンのPHP 5.3の詳細分析_PHPチュートリアル

Jul 13, 2016 pm 05:08 PM
mysqlphp1つ分析するチュートリアル新しいバージョン特性詳しい説明合格ドライブ

1. Mysql チュートリアル ドライバー mysqlnd 長い間、PHP チュートリアルは MySQL クライアントを通じて MySQL に接続してきましたが、現在 MySQL は MySQL クライアントの PHP バージョンを正式にリリースしており、この MySQLnd によりメモリ使用量が効果的に削減され、パフォーマンスが向上します。詳細については、以下を参照してください。 http://dev.mysql.com/downloads/connector/php-mysqlnd/ http://forge.mysql.com/wiki/PHP_MYSQLND 図からわかるように、mysqlnd を使用すると、mysql ドライバーから php 拡張機能にデータをコピーする手順が不要になります。 Mysqlnd はコピーオンライト、つまりコピーオンライトと読み取り参照を使用します。 mysqlnd は php5.3 のソース コードに組み込まれています。コンパイル時に、--with-mysql=mysqlnd、--with-mysqli=mysqlnd、および --with-pdo-mysql=mysqlnd を使用して mysqlnd ドライバーをインストールします。 mysqlndの利点 PHP のコンパイルはより便利で、libmysql は必要なく、すでにソース コードに組み込まれています。

  1. PHP のコンパイルがより便利になり、libmysql は必要なくなり、すでにソース コードに組み込まれています
  2. 著作権の問題を回避するにはphpライセンスを使用してください
  3. PHP メモリ管理を使用し、PHP メモリ制限 (memory_limit) をサポートします
  4. メモリ内にはすべてのデータのコピーが 1 つだけあります。以前の libmysql には 2 つのコピーがありました。上の図を参照してください
  5. ボトルネックの分析に役立つパフォーマンス統計機能を提供します
  6. mysqli は永続的な接続をサポートします
  7. パフォーマンスは明らかにlibmysqlより速いです
  8. ドライバー層にキャッシュメカニズムを追加
非常に多くの機能を見た後、PDO はデータベース チュートリアルの抽象化レイヤーとして、さまざまなバックエンドの機能を引き出すことができるのでしょうか?データベースとして mysql を使用する場合、mysqli の方が良い選択ですか? mysqli は単なる過剰なプロダクトであり、PDO は未来であると常々感じています。 2. パフォーマンスの向上
  1. md5() はおそらくパフォーマンスを 10% ~ 15% 向上させます
  2. エンジン内のスタック実装の改善、わかりません
  3. 定数はROMに保存されています(定数は読み取り専用メモリに移動されます)、ここの意味がわかりません
  4. 例外処理を改善し、オペコードをより簡潔にします
  5. include(require)_onceを繰り返し開く問題を解決しました。以前は静的変数を使用して一度実装していましたが、最終的にこの問題を解決しました
  6. gcc4 でコンパイルされたバイナリは小さくなります
  7. 全体的なパフォーマンスが 5%-15% 向上しました
多くの人は、Web のボトルネックは DB であるため、アプリのパフォーマンスは気にしないと考えています。これは主に、アプリの拡張が DB の拡張よりもはるかに簡単であるため、DB のボトルネックが発生するためだと思います。結局のところ、パフォーマンスは、最終的にはアプリのさまざまな問題を解決するものであり、プログラマーとしては、高品質のコードを書くことが最も基本的な要件となります。メモリ使用量が少なく、実行速度が速いプログラムは、同時実行性が高い場合に非常に効果的です。実装方法を変更すると、それが何十倍にもなるのが普通です。質の高いコードを書く意識が必要だと思います。 3. ?:演算子 実際、これは js では || です。返される結果は論理型ではなく、元の変数の値です。たとえば、false ?: 123 は true ではなく 123 を返します。構文が少し変です!

4. ネームスペース

これは非常に優れた機能です。追加される前は、名前付け汚染を解決するためにプレフィックスが使用されていました (笑)。
5. 遅延静的バインディング PHP の静的な性質はプリコンパイル中に修正されるため、継承時に親クラスの self はサブクラスではなく親クラスを参照すると推測されます。 PHP5.3 では、実行時に現在のクラスをキャプチャできる新しい構文 static が追加されています。 典型的な例はシングルトン モードです。
リーリー
この親クラスを継承する場合、サブクラスのシングルトンは親クラスの getInstance をオーバーライドする必要があります。 5.3 では、バインディングを遅らせるための static の使用がサポートされていますが、残念ながら、たとえ static キーワードがあっても、新しい static を使用してインスタンスを作成することはできませんが、回避策はあります。
リーリー
这个新特性当前可能会有问题存在,暂时不建议使用。 六、新的魔法函数__callStatic 其实就是__call的静态版,调用的静态方法不存在会调用这个魔法函数,但是低效 七、通过变量调用静态(Variable Static Calls) 以前可以通过变量调用对象的方法,例如$instance->$method();,而静态方法不支持,5.3后就支持了可以通过$someClass::$method()调用了,但是低效。 八、日期函数date_create_from_format 把字符串转换成时间戳,如果使用strtotime的话,日期格式是php解析的,而5.3的date_create_from_format可以设置字符串的日期格式,
$date = strtotime("08-01-07 00:00:00");//php 认为格式 是年-月-日   <br>var_dump(date("Y-m-d", $date)); // string(10) "2008-01-07"  <br>$date = date_create_from_format("m-d-y", "08-01-07");//告诉php格式是 月-日-年 <br>var_dump($date->format('Y-m-d')); // string(10) "2007-08-01"
九、匿名函数(Lambda functions)和闭包(closures) js有个很爽的地方就是支持函数式编程,php很不爽的地方就是函数太过正规了,不过5.3后php更自由了。 定义匿名函数的语法
$lambda = function () { echo "Hello World!n"; };
function replace_spaces ($text) {   <br>$replacement = function ($matches) {   <br>return str_replace ($matches[1], ' ', ' ').' ';   <br>};   <br>return preg_replace_callback ('/( +) /', $replacement, $text);   <br>}
function replace_spaces ($text) {   <br>return preg_replace_callback ('/( +) /',   <br>function ($matches) {   <br>return str_replace ($matches[1], ' ', ' ').' ';   <br>}, $text);   <br>}
产生闭包的语法
function (normal parameters) use ($var1, $var2, &$refvar) {}
引入了use语法,并且支持引用变量 十、新魔法常量__DIR__ 以前只有__FILE__,为了得到当前文件所在的路径,都是用dirname(__FILE__)来得到的,现在可以用__DIR__代替了 十一、NOWDOC php定义字符串有一种格式叫定界符.
$foo = ONE;
这种方式称为HEREDOC,php会解析里面的变量,而有时候我们不需要解析变量,5.3加入了NOWDOC,其实就是定界符的单引号版
$bar = 
            
这样,php只把它当作字符串,变量不会解析 十二、GC 因为php本身工作机制的原因,所以php的GC机制只要高效就够了,允许少量内存泄漏,毕竟程序执行完毕就会释放所有申请的内存,根本不会有内存泄漏的问题,但这只是对于短暂运行的程序而言,如果用php编写持久执行就要考虑内存泄漏问题了。
php的GC机制采用引用计数机制,引用计数是很简单高效的GC机制,不过缺点也很明显,不能完全回收所有已无效的变量,例如变量相互引用了,就无法回收了,5.3里加入的GC函数,其实就是起到增强GC机制的作用。
gc_enable(); // 激活GC,增强GC机制,回收循环引用的无效变量 <br>var_dump(gc_collect_cycles()); // 强制回收已无效的变量 <br>gc_disable(); // 禁用GC

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/629847.htmlTechArticle一、mysql教程驱动mysqlnd 一直以来,php教程都是通过mysql客户端连接mysql,而现在mysql官方已经推出php版的mysql客户端,而这个mysqlnd有效降低内...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
負荷分散がセッション管理にどのように影響し、それに対処するかを説明します。負荷分散がセッション管理にどのように影響し、それに対処するかを説明します。Apr 29, 2025 am 12:42 AM

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 1。セッションレプリケーションサーバー間のセッションデータをコピーします。 2。セッションスティンネスは、ユーザーリクエストを同じサーバーに指示します。 3.集中セッションストレージは、Redisなどの独立したサーバーを使用してセッションデータを保存してデータ共有を確保します。

セッションロックの概念を説明します。セッションロックの概念を説明します。Apr 29, 2025 am 12:39 AM

SESSIONLOCKINGISATECHNIQUESTOESUREAUSER'SSESSIONREMAINSEXCLUSIVETOONEUSATIME.ITISCRUCIALFORPREVENTINGDATACORTIONANDSECURITYBREACHESINMULTI-USERAPPLICATIONS.SESSIONLOCKINGISISIMPLEMENTEDUSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGROCKINGSMECHANISMなど

PHPセッションの選択肢はありますか?PHPセッションの選択肢はありますか?Apr 29, 2025 am 12:36 AM

PHPセッションの代替品には、Cookie、トークンベースの認証、データベースベースのセッション、Redis/Memcachedが含まれます。 1.Cookiesは、クライアントにデータを保存することによりセッションを管理します。 2.トークンベースの認証はトークンを使用してユーザーを検証します。これは非常に安全ですが、追加のロジックが必要です。 3.Databaseベースのセッションは、データベースにデータを保存します。これは、スケーラビリティが良好ですが、パフォーマンスに影響を与える可能性があります。 4. Redis/Memcachedは分散キャッシュを使用してパフォーマンスとスケーラビリティを向上させますが、追加のマッチングが必要です

PHPのコンテキストで「セッションハイジャック」という用語を定義します。PHPのコンテキストで「セッションハイジャック」という用語を定義します。Apr 29, 2025 am 12:33 AM

SessionHijackingとは、ユーザーのSessionIDを取得してユーザーになりすましている攻撃者を指します。予防方法には、次のものが含まれます。1)HTTPSを使用した通信の暗号化。 2)SessionIDのソースの検証。 3)安全なSessionID生成アルゴリズムの使用。 4)SessionIDを定期的に更新します。

PHPの完全な形式は何ですか?PHPの完全な形式は何ですか?Apr 28, 2025 pm 04:58 PM

この記事では、PHPについて説明し、その完全なフォーム、Web開発での主要な使用、PythonとJavaとの比較、および初心者の学習のしやすさについて説明します。

PHPはフォームデータをどのように処理しますか?PHPはフォームデータをどのように処理しますか?Apr 28, 2025 pm 04:57 PM

PHPは、$ \ _ postおよび$ \ _を使用してフォームデータを処理し、検証、消毒、安全なデータベースインタラクションを通じてセキュリティを確保します。

PHPとASP.NETの違いは何ですか?PHPとASP.NETの違いは何ですか?Apr 28, 2025 pm 04:56 PM

この記事では、PHPとASP.NETを比較して、大規模なWebアプリケーション、パフォーマンスの違い、セキュリティ機能への適合性に焦点を当てています。どちらも大規模なプロジェクトでは実行可能ですが、PHPはオープンソースであり、プラットフォームに依存しませんが、ASP.NET、

PHPはケースに敏感な言語ですか?PHPはケースに敏感な言語ですか?Apr 28, 2025 pm 04:55 PM

PHPの症例感度は変化します:関数は鈍感であり、変数とクラスは感度があります。ベストプラクティスには、一貫した命名と、比較のためにケース非感受性関数を使用することが含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール