目次
PHP の Streams ツールの詳細な理解、phpstreams の詳細な理解
ホームページ バックエンド開発 PHPチュートリアル PHP の Streams ツールについての深い理解、phpstreams_PHP チュートリアルの深い理解

PHP の Streams ツールについての深い理解、phpstreams_PHP チュートリアルの深い理解

Jul 13, 2016 am 09:47 AM
php streams

PHP の Streams ツールの詳細な理解、phpstreams の詳細な理解

Streams は、PHP が提供する強力なツールであり、それをうまく活用すると、パフォーマンスが大幅に向上します。 PHP の生産性。 Streams のパワーを活用することで、アプリケーションを次のレベルに引き上げることができます。

以下は PHP マニュアルのストリームの説明です:

  • ストリームは PHP バージョン 4.3.0 で導入されました。これは、ファイル、ネットワーク、データ圧縮、その他の種類のファイルの操作方法を統一するために使用され、これらのファイル操作に共通の関数インターフェイスのセットを提供します。つまり、ストリームはストリーミング動作を行うリソース オブジェクトです。言い換えれば、ストリームに対する読み取りと書き込みを線形に行うことができます。また、 fseek() を使用すると、ストリーム内の任意の位置にジャンプできます。

各 Streams オブジェクトにはラッパー クラスがあり、特別なプロトコルやエンコーディングを処理するための関連コードを追加できます。よく使用されるパッケージ クラスの一部は PHP に組み込まれており、カスタム パッケージ クラスを作成して登録することもできます。既存のコンテキストとフィルターを使用してラッパー クラスを変更および拡張することもできます。

ストリームの基本

ストリームは :// を通じて参照できます。このうち、 はパッケージング クラスの名前であり、 の内容はパッケージング クラスの構文によって指定されます。

PHP のデフォルトのパッケージング クラスは file:// です。これは、ファイル システムにアクセスするときに実際にはストリームを使用することを意味します。ファイルの内容は、readfile('/path/to/somefile.txt') または readfile('file:///path/to/somefile.txt') の 2 つの方法で読み取ることができます。これらのメソッドは同等です。 。 readfile('http://google.com/') を使用すると、PHP は動作する HTTP ストリーム ラッパー クラスを選択します。

上で述べたように、PHP は多くの組み込みパッケージ クラス、プロトコル、フィルターを提供します。 以下で説明する方法に従って、このマシンでサポートされているパッケージング クラスをクエリできます:

リーリー

私のマシンでの出力は次のとおりです:

リーリー

たくさんの機能があり、見た目も良いですよね?

上記の組み込みストリームに加えて、Amazon S3、MS Excel、Google ストレージ、Dropbox、さらには Twitter 用のサードパーティ ストリームを作成することもできます。

php://パッケージングクラス

PHP には、この言語で I/O ストリームを処理するためのラッパー クラスが組み込まれています。基本的なストリームは php://stdin、php://stdout、および php://stderr です。これらの 3 つのストリームはそれぞれデフォルトの I/O リソースにマップされます。同時に、PHP は php://input も提供します。これを介して、POST リクエストの生の本文に読み取り専用でアクセスできます。 これは、特に POST リクエストにデータ ペイロードを埋め込むリモート サービスを扱う場合に、非常に便利な機能です。

以下では、cURL ツールを使用して簡単なテストを実行します。

リーリー

PHPスクリプトでprint_r($_POST)を使用したテスト結果は次のとおりです:

リーリー

$_POST 配列ではデータの最初の項目にアクセスできないことに注意してください。しかし、readfile('php://input') を使用すると、結果は異なります:

リーリー

PHP 5.1 では、一時データの読み取りと書き込み用に php://memory と php://tempstream という 2 つのパッケージ クラスがさらに追加されています。ラッパー クラスの名前が示すように、このデータは基盤となるシステムのメモリまたは一時ファイルに保存されます。

php://filter は、ストリームにフィルター機能を追加するために使用されるメタパッケージ クラスです。フィルタは、readfile() または file_get_contents()/stream_get_contents() を使用してストリームを開くときに有効になります。以下に例を示します:

リーリー

最初の例では、ディスクに保存されたデータをエンコードするためにフィルターが使用されています。2 番目の例では、リモート URL からデータを読み取るために 2 つのカスケード フィルターが使用されています。フィルターを使用すると、アプリケーションに非常に強力な機能をもたらすことができます。

ストリームコンテキスト

コンテキストは、ストリーム関連のパラメーターまたはオプションのセットであり、コンテキストを使用してラッパー クラスの動作を変更または強化します。たとえば、コンテキストを使用して HTTP ラッパーを変更することは、一般的に使用される使用シナリオです。 このようにして、cURL ツールを使用せずにいくつかの単純なネットワーク操作を完了できます。以下に例を示します:

リーリー

まず、2 桁の配列であるオプション配列を定義します。パラメーターは $array['wrapper']['option_name'] の形式でアクセスできます。 (各ラッパー クラスのコンテキスト オプションは異なることに注意してください)。次に、stream_context_get_default() を呼び出してこれらのオプションを設定します。stream_context_get_default() も結果としてデフォルトのコンテキストを返します。設定が完了したら、readfile() を呼び出すと、設定したばかりのコンテキストがコンテンツのキャプチャに使用されます。


上記の例では、リモート スクリプトが php://input を使用してコンテンツを読み取ることができるように、コンテンツがリクエスト本文に埋め込まれています。同時に、以下に示すように、apache_request_headers() を使用してリクエストのヘッダーを取得することもできます。

Array
(
  [Host] => localhost
  [Auth] => SecretAuthToken
  [Content-type] => application/x-www-form-urlencoded
  [Content-length] => 11
)
ログイン後にコピー

在上面的例子中是修改默认context的参数,当然我们也可以创建一个新的context,进行交替使用。

<&#63;php
$alternative = stream_context_create($other_opts);
readfile('http://localhost/dev/streams/php_input.php', false, $alternative);
ログイン後にコピー

结论

我们怎样在现实世界中驾驭stream的强大力量呢?使用stream能为我们的程序带来什么现实的好处? 正如前文介绍的那样,stream对所有文件系统相关的功能进行了抽象,所以我第一个想到的应用场景是使用虚拟文件系统的包装类来访问PaaS供应商提供的服务,比如说访问HeroKu或者AppFog,它们实际上都没有真正文件系统。 使用stream只要对我们的应用程序稍作修改,就可以将其移植到云端。 接下来--在我的下一篇文章中--我将介绍如何编写自定义的包装类以实现对特殊文件格式和编码格式的操作。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1026546.htmlTechArticle深入理解PHP中的Streams工具,深入理解phpstreams Streams 是PHP提供的一个强有力的工具,我们常常在不经意会使用到它,如果善加利用将大大提...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles