ホームページ >バックエンド開発 >PHPの問題 >PHPで一時ファイルを操作する方法

PHPで一時ファイルを操作する方法

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-05-31 09:34:062310ブラウズ

この記事ではPHPでの一時ファイルの操作方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHPで一時ファイルを操作する方法

ファイル関連の操作については皆さんすでによくご存知だと思いますが、今後マニュアルで関連するファイル操作機能を読むときに詳しく説明します。今日はまず、PHP の一時ファイルに関連するいくつかのことを見てみましょう。

PHP のデフォルトの一時ファイル ディレクトリを取得する

Linux オペレーティング システムを学習したことがある人なら、/tmp というディレクトリがあることを知っているでしょう。ディレクトリ (Windows では通常: C:\Windows\Temp\)。システムの一時ファイルを保存するために使用されるため、このディレクトリは一時ファイル ディレクトリとも呼ばれます。多くのソフトウェアは、キャッシュや一時的に生成されたスクリプトなど、一時的に保存されたファイルをこのディレクトリに配置します。また、PHP はデフォルトで一時ファイル ディレクトリをこのディレクトリにポイントし、SESSION ファイルを含む一時ファイルはここに保存されます。これは、php.ini ファイルの sys_tmp_dir を介して設定できます。

もちろん、動的に実行される PHP プログラムでは、関数を通じて現在の一時ファイル ディレクトリを取得することもできます。

print_r(sys_get_temp_dir());
// /tmp

一時ファイルの作成

一時ファイル ディレクトリができたので、もちろん PHP は一時ファイルを直接作成するための関数を慎重に用意しています。

$tmpFile = tmpfile();
fwrite($tmpFile, "I'm tmp file.");
// ll /tmp
// vim phpbnAjbE

sleep(10);

fclose($tmpFile);
// ll /tmp

tmpfile() 関数は、この一時ファイルの作成に使用されます。ファイル名やパスを指定する必要はありません。同時に、作成されるファイルのタイプは w、つまり It です。直接読み取りおよび書き込み可能なファイルです。 fclose() が呼び出されると、この一時ファイルは自動的に削除されます。マニュアルには、この機能で作成したファイルはスクリプト終了後に自動的に削除されると記載されていますが、テストしたところ、スクリプト終了時にファイルは削除されないことが判明しました。

関数を呼び出してコンテンツを書き込んだ後、1​​0 秒間一時停止します。実際には、/tmp ディレクトリに移動して、ファイルが正常に生成されたかどうかを確認するだけです。ファイルの作成時刻に基づいて、対応する生成ファイルが見つかりました。そして、10秒後に fclose() を実行した後、再度ディレクトリを確認すると、ファイルが自動的に削除されていることがわかります。

ディレクトリの状態に基づいて一意の名前を持つ一時ファイルを作成する

最後に、PHP は一時ファイルを作成するための非常に使いやすい機能も提供します。

$tmpFile = tempnam('/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source', 'testtmp');
$f = fopen($tmpFile, "w");
fwrite($f, "I'm tmp file.");
// ll /tmp
// vim testtmpH7bptZ

// etc目录没有写权限
$tmpFile = tempnam('/etc', 'testtmp');
$f = fopen($tmpFile, "w");
fwrite($f, "I'm tmp file.");
// ll /etc
// ll /tmp
// vim testtmpTUNucM

tempnam() 関数。ディレクトリのステータスに基づいて一意の名前を持つ一時ファイルを生成します。ディレクトリのステータスは何に基づいていますか?上記のコード コメントからわかるように、2 番目の段落の /etc ディレクトリは通常、root 権限を持つディレクトリであり、root アカウント権限がなければ、ファイルを作成したり変更したりすることはできません。権限のないディレクトリ、またはまったく存在しないディレクトリの場合、tempnam() 関数は一時ファイル ディレクトリにファイルを生成します。コードの最初の部分のように、ディレクトリが正常に存在し、書き込み可能であれば、ファイルはこのディレクトリに通常どおり作成されます。

tempnam() 関数の 2 番目のパラメーターは、生成されるファイル名のプレフィックスを指定します。 tmpfile() 関数はファイル名を指定できませんが、この関数はファイル名に固定のプレフィックスを与え、プレフィックス以降の自動生成されたファイル名部分が一意であることを保証できます。

概要

これらの非常に興味深い関数を発見しました。一時キャッシュとして使用するか、ファイルを作成するために使用するかにかかわらず、これら 2 つの一時ファイル操作関数は非常に便利です。今後の開発ではこのような機能をさらに活用できるようになり、生産性が大幅に向上する可能性があります。

テスト コード:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E5%9C%A8PHP%E4%B8%AD%E6%93%8D%E4%BD%9C%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6.php

推奨学習: php ビデオ チュートリアル

以上がPHPで一時ファイルを操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。