Artikel ini akan memperkenalkan anda kepada fail sementara dalam PHP dan memperkenalkan kaedah mendapatkan direktori fail sementara lalai dan membuat fail sementara saya harap ia akan membantu anda!
Saya percaya semua orang sudah tahu banyak tentang operasi berkaitan fail Kami juga akan menerangkannya secara terperinci apabila kami membaca fungsi pengendalian fail yang berkaitan dalam manual pada masa hadapan. Hari ini, mari kita lihat dahulu beberapa perkara yang berkaitan dengan fail sementara dalam PHP.
Sesiapa yang telah mempelajari sistem pengendalian Linux akan mengetahui bahawa terdapat direktori yang dipanggil direktori /tmp (biasanya: C:WindowsTemp dalam Windows) , yang digunakan Ia menyimpan beberapa fail sementara sistem, jadi direktori ini juga dipanggil direktori fail sementara. Banyak perisian akan meletakkan beberapa fail yang disimpan sementara dalam direktori ini, termasuk beberapa cache, beberapa skrip yang dijana sementara, dsb. PHP juga akan menghalakan direktori fail sementara ke direktori ini secara lalai, dan fail sementara termasuk fail SESSION akan disimpan di sini. Ia boleh ditetapkan melalui sys_tmp_dir dalam fail php.ini.
Sudah tentu, dalam program PHP yang berjalan secara dinamik, kita juga boleh mendapatkan direktori fail sementara semasa melalui fungsi.
print_r(sys_get_temp_dir()); // /tmp
Sekarang terdapat direktori fail sementara, PHP sudah tentu dengan teliti menyediakan fungsi untuk kami mencipta fail sementara secara terus.
$tmpFile = tmpfile(); fwrite($tmpFile, "I'm tmp file."); // ll /tmp // vim phpbnAjbE sleep(10); fclose($tmpFile); // ll /tmp
fungsi tmpfile() digunakan untuk mencipta fail sementara ini. Kita tidak perlu menentukan nama fail atau laluan untuknya ialah, ia adalah fail yang boleh dibaca dan ditulis secara langsung. Fail sementara ini akan dipadam secara automatik apabila fclose() dipanggil. Manual mengatakan bahawa fail yang dibuat menggunakan fungsi ini akan dipadam secara automatik selepas skrip selesai, tetapi selepas ujian, didapati bahawa fail tidak dipadamkan apabila skrip tamat.
Selepas memanggil fungsi dan menulis kandungan, kami berhenti seketika selama sepuluh saat. Sebenarnya, ia hanya untuk pergi ke direktori /tmp untuk melihat sama ada fail berjaya dijana. Berdasarkan masa fail dibuat, kami menemui fail yang dijana yang sepadan. Kemudian selepas melaksanakan fclose() sepuluh saat kemudian, semak direktori sekali lagi dan anda akan mendapati bahawa fail itu telah dipadamkan secara automatik.
Akhir sekali, PHP juga menyediakan kami fungsi yang sangat mesra pengguna untuk mencipta fail sementara.
$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
fungsi tempnam(), yang akan menjana fail sementara dengan nama unik berdasarkan status direktori. Apakah yang dimaksudkan berdasarkan status direktori? Seperti yang dapat dilihat daripada ulasan kod di atas, direktori /etc dalam perenggan kedua biasanya merupakan direktori dengan kebenaran root Tanpa kebenaran akaun root, kami tidak boleh membuat atau mengubah suai fail. Jika ia adalah direktori tanpa kebenaran, atau direktori yang tidak wujud sama sekali, fungsi tempnam() akan menjana fail ke dalam direktori fail sementara. Jika direktori wujud secara normal dan boleh ditulis, seperti dalam sekeping kod pertama, fail akan dibuat dalam direktori ini seperti biasa.
Parameter kedua bagi fungsi tempnam() ialah untuk menentukan awalan nama fail yang dijana. Fungsi tmpfile() tidak boleh menentukan nama fail, tetapi fungsi ini boleh memberikan nama fail awalan tetap dan memastikan bahagian nama fail yang dijana secara automatik selepas awalan adalah unik.
Saya menemui fungsi yang sangat menarik ini Sama ada ia digunakan sebagai cache sementara atau untuk mencipta beberapa fail, kedua-dua fungsi pengendalian fail sementara ini sangat berguna. Kita boleh cuba menggunakan fungsi sedemikian lebih dalam pembangunan masa depan, dan mungkin ia boleh membawa kepada kita banyak peningkatan produktiviti.
Kod ujian: https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/Mengendalikan fail sementara dalam PHP.php
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk membuat fail sementara dalam PHP? Analisis ringkas tentang cara mengendalikan fail sementara. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!