この記事では、PHP の一時ファイルについて理解し、デフォルトの一時ファイル ディレクトリの取得方法と一時ファイルの作成方法を紹介します。
ファイル関連の操作については皆さんすでによくご存知だと思いますが、今後マニュアルで関連するファイル操作機能を読むときに詳しく説明します。今日はまず、PHP の一時ファイルに関連するいくつかのことを見てみましょう。
Linux オペレーティング システムを学習したことがある人なら、/tmp ディレクトリ (通常は C:\Windows\Temp\) というディレクトリがあることを知っているでしょう。 Windows)、システムの一部の一時ファイルを保存するために使用されるため、このディレクトリは一時ファイル ディレクトリとも呼ばれます。多くのソフトウェアは、キャッシュや一時的に生成されたスクリプトなど、一時的に保存されたファイルをこのディレクトリに配置します。また、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() が呼び出されると、この一時ファイルは自動的に削除されます。マニュアルには、この機能で作成したファイルはスクリプト終了後に自動的に削除されると記載されていますが、テストしたところ、スクリプト終了時にファイルは削除されないことが判明しました。
関数を呼び出してコンテンツを書き込んだ後、10 秒間一時停止します。実際には、/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/PHP.phpでの一時ファイルの操作
推奨される学習: 「PHP ビデオ チュートリアル 」
以上がPHPで一時ファイルを作成するにはどうすればよいですか?一時ファイルの操作方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。