Maison >développement back-end >Problème PHP >Comment exploiter les fichiers temporaires en PHP

Comment exploiter les fichiers temporaires en PHP

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-05-31 09:34:062328parcourir

Cet article vous présentera comment exploiter les fichiers temporaires en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment exploiter les fichiers temporaires en PHP

Je pense que tout le monde en sait déjà beaucoup sur les opérations liées aux fichiers. Nous les expliquerons également en détail lorsque nous lirons les fonctions d'opération de fichiers pertinentes dans le manuel à l'avenir. Aujourd'hui, examinons d'abord certains éléments liés aux fichiers temporaires en PHP.

Obtenir le répertoire de fichiers temporaires créé par défaut de PHP

Ceux qui ont étudié le système d'exploitation Linux sauront qu'il existe un répertoire appelé Répertoire /tmp (sous Windows généralement : C:WindowsTemp), qui est utilisé pour stocker certains fichiers temporaires du système, ce répertoire est donc également appelé répertoire de fichiers temporaires. De nombreux logiciels placeront certains fichiers temporairement enregistrés dans ce répertoire, notamment des caches, des scripts générés temporairement, etc. PHP pointera également le répertoire des fichiers temporaires vers ce répertoire par défaut, et les fichiers temporaires, y compris les fichiers SESSION, seront enregistrés ici. Il peut être défini via sys_tmp_dir dans le fichier php.ini.

Bien sûr, dans un programme PHP exécuté dynamiquement, nous pouvons également obtenir le répertoire de fichiers temporaires actuel via une fonction.

print_r(sys_get_temp_dir());
// /tmp

Créer un fichier temporaire

Maintenant qu'il existe un répertoire de fichiers temporaires, PHP a bien sûr soigneusement préparé une fonction pour nous permettre de créer directement un fichier temporaire. La fonction

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

sleep(10);

fclose($tmpFile);
// ll /tmp

tmpfile() est utilisée pour créer ce fichier temporaire. Nous n'avons pas besoin de spécifier un nom de fichier ou un chemin pour celui-ci. En même temps, le fichier qu'elle crée est de type w+, c'est-à-dire. Il s'agit directement d'un fichier lisible et inscriptible. Lorsque fclose() est appelé, ce fichier temporaire sera automatiquement supprimé. Le manuel indique que les fichiers créés à l'aide de cette fonction seront automatiquement supprimés une fois le script terminé, mais après des tests, il a été constaté que les fichiers ne sont pas supprimés à la fin du script.

Après avoir appelé la fonction et écrit le contenu, nous faisons une pause de dix secondes. En fait, il suffit d'aller dans le répertoire /tmp pour voir si le fichier est généré avec succès. En fonction de l'heure à laquelle le fichier a été créé, nous avons trouvé le fichier généré correspondant. Puis après avoir exécuté fclose() dix secondes plus tard, vérifiez à nouveau le répertoire et vous constaterez que le fichier a été automatiquement supprimé.

Créer un fichier temporaire avec un nom unique basé sur l'état du répertoire

Enfin, PHP nous offre également une fonction très conviviale pour créer des fichiers temporaires. Fonction

$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(), qui générera un fichier temporaire avec un nom unique basé sur l'état du répertoire. Qu'est-ce qui est basé sur l'état du répertoire ? Comme le montrent les commentaires de code ci-dessus, le répertoire /etc du deuxième paragraphe est généralement un répertoire avec les autorisations root. Sans les autorisations du compte root, nous ne pouvons pas créer ou modifier de fichiers. S'il s'agit d'un tel répertoire sans autorisations, ou d'un répertoire qui n'existe pas du tout, la fonction tempnam() générera le fichier dans le répertoire de fichiers temporaires. Si le répertoire existe normalement et est accessible en écriture, comme dans le premier morceau de code, le fichier sera créé normalement dans ce répertoire.

Le deuxième paramètre de la fonction tempnam() est de spécifier le préfixe du nom du fichier généré. La fonction tmpfile() ne peut pas spécifier de nom de fichier, mais cette fonction peut donner au nom de fichier un préfixe fixe et garantir que la partie du nom de fichier générée automatiquement après le préfixe est unique.

Résumé

J'ai découvert ces fonctions très intéressantes, qu'elles soient utilisées comme cache temporaire ou pour créer certains fichiers, ces deux fonctions d'opérations sur les fichiers temporaires sont très utiles. Nous pouvons essayer d’utiliser davantage ces fonctions dans les développements futurs, et peut-être qu’elles pourront nous apporter de nombreuses améliorations de productivité.

Code de test :

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

Apprentissage recommandé : Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer