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

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

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

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 = <<this is $fubar <br>ONE;
ログイン後にコピー
这种方式称为HEREDOC,php会解析里面的变量,而有时候我们不需要解析变量,5.3加入了NOWDOC,其实就是定界符的单引号版
$bar = <<<'TWO' this is $fubar TWO;
ログイン後にコピー
这样,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 までご連絡ください。

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

rootとしてmysqlにログインできません rootとしてmysqlにログインできません Apr 08, 2025 pm 04:54 PM

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

MySQLテーブルロックテーブルを変更するかどうか MySQLテーブルロックテーブルを変更するかどうか Apr 08, 2025 pm 05:06 PM

MySQLがテーブル構造を変更すると、メタデータロックが通常使用され、テーブルがロックされる可能性があります。ロックの影響を減らすために、次の測定値をとることができます。1。オンラインDDLでテーブルを使用できます。 2。バッチで複雑な変更を実行します。 3.小規模またはオフピーク期間中に操作します。 4. PT-OSCツールを使用して、より細かい制御を実現します。

MySQLのクエリ最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを改善するために不可欠です MySQLのクエリ最適化は、特に大規模なデータセットを扱う場合、データベースのパフォーマンスを改善するために不可欠です Apr 08, 2025 pm 07:12 PM

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

MySQLユーザーとデータベースの関係 MySQLユーザーとデータベースの関係 Apr 08, 2025 pm 07:15 PM

MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

mysqlは支払う必要がありますか mysqlは支払う必要がありますか Apr 08, 2025 pm 05:36 PM

MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

RDS MySQL Redshift Zero ETLとの統合 RDS MySQL Redshift Zero ETLとの統合 Apr 08, 2025 pm 07:06 PM

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

MySQLはAndroidで実行できますか MySQLはAndroidで実行できますか Apr 08, 2025 pm 05:03 PM

MySQLはAndroidで直接実行できませんが、次の方法を使用して間接的に実装できます。Androidシステムに構築されたLightWeight Database SQLiteを使用して、別のサーバーを必要とせず、モバイルデバイスアプリケーションに非常に適したリソース使用量が少ない。 MySQLサーバーにリモートで接続し、データの読み取りと書き込みのためにネットワークを介してリモートサーバー上のMySQLデータベースに接続しますが、強力なネットワーク依存関係、セキュリティの問題、サーバーコストなどの短所があります。

高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? 高負荷アプリケーションのMySQLパフォーマンスを最適化する方法は? Apr 08, 2025 pm 06:03 PM

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

See all articles