Maison  >  Article  >  développement back-end  >  Partage d'exemples d'opérations de base de fichiers PHP

Partage d'exemples d'opérations de base de fichiers PHP

小云云
小云云original
2018-03-20 13:27:151114parcourir


Cet article partage principalement avec vous des exemples d'opérations de base des fichiers PHP. J'espère qu'il pourra vous aider. Tout d'abord, nous partagerons avec vous les opérations de base de lecture et d'écriture de PHP. fichiers.

Opérations de base de lecture et d'écriture

  • Fonction d'écriture de fichier : file_put_contents()

    • FILE_USE_INCLUDE_PATH : vérifiera le chemin intégré pour la copie du nom de fichier

    • LOCK_EX : verrouillera le fichier

    • FILE_APPEND : se déplacera à la fin du fichier. Sinon, le contenu du fichier sera effacé

    • Syntaxe :

      int file_put_contents(file,data,mode,context)

      参数 描述
      file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
      data 可选。规定要写入文件的数据。可以是字符串、一维数组或数据流。
      mode 可选。如何打开/写入文件。可能值:FILE_USE_INCLUDE_PATH 、 FILE_APPEND 、 LOCK_EX
      context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 null,则忽略。
    • Valeur de retour : la fonction renvoie le nombre d'octets de données écrits dans le fichier.

    • description du paramètre de mode

    • a la même fonction que d'appeler fopen(), fwrite() et fclose() dans l'ordre.

  • Fonction de lecture de fichier : file_get_contents()

    • Syntaxe :

      string file_put_contents(path,include_path,context,start,max_length)

      参数 描述
      path 必需。规定要读取的文件。可以是外部url
      include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 “1”。
      context 可选。规定文件句柄的环境。
      start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
      max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
    • Valeur de retour : la chaîne lue.

Autres fonctions de fichiers couramment utilisées

  • Dissocier() Supprimer le fichier

  • Renommer ( ) Déplacement de fichier (renommer)

  • Filesize() Taille du fichier

  • File_exists() Si le fichier existe

  • Filemtime() L'heure de dernière modification du fichier !

Opérations de lecture et d'écriture de gestion de fichiers

La plupart des lectures et écritures de fichiers sont effectuées à l'aide des fonctions : File_put_contents, file_get_contents.
Dans quelques cas particuliers, les deux fonctions ci-dessus ne sont pas faciles à utiliser.
Généralement, le fichier est trop volumineux ! Il ne peut être exploité que partie par partie !
Les unités de base sont des octets :

  • la fonction fopen() ouvre un fichier ou une URL.

    Si l'ouverture échoue, cette fonction renvoie FALSE.
    Ouvrir le descripteur de fichier, chemin de données entre le programme PHP et le fichier !
    Nécessite deux paramètres : l'adresse du fichier et le mode d'ouverture !

    Mode Ouvrir : Spécifiez les opérations à effectuer après l'ouverture du fichier ! Les modes suivants peuvent être sélectionnés :

    • r : lecture, mode lecture.

    • w : écriture, opération d'écriture, écriture claire.

    • a : ajouter, opération d'écriture, ajouter l'écriture.

    • x : Nouvelle écriture, vous ne pouvez créer que de nouveaux fichiers pour l'exploitation ! Il s'agit d'une opération d'écriture, similaire au w

    • + mode étendu : les opérations étendues peuvent effectuer des opérations de lecture et d'écriture.

      a033f09b1a547cc02045060a89d4ed93
  • Fonctions de lecture de gestion de fichiers fread(),fgetc(),fgets(),feof();

    • Données d'un octet = fgetc(handle); //caractères tronqués dans le cas de caractères multi-octets
      Chaque fois qu'un octet est lu, avancez le pointeur de fichier d'un octet ! Dans les opérations de handle, cela dépend du pointeur de fichier !

    • String = fgets(handle, length)
      Si un caractère de nouvelle ligne est lu en premier lors de la lecture, il se terminera également. Aussi appelée fonction de lecture de ligne ! Logique typique, chaque ligne enregistre un ensemble d'informations, cette fonction est la plus couramment utilisée !

    • feof() détermine si la fin du fichier est atteinte
      Exemple de lecture de toutes les informations du fichier :

      <?php
          $handle = fopen(&#39;./langref.txt&#39;,&#39;r&#39;);
          while (! feof($handle)) {
              $line = fgets($handle,1024);
              echo $line . "</br>";
          }
      ?>
    • String = fread( handle, length)
      Lire le contenu en fonction de la longueur, qui est différente des fgets et n'est pas limité par les nouvelles lignes
      La seule limitation est : la longueur maximale ne peut pas dépasser 8192 !

  • Fonction d'écriture de descripteur de fichier fwrite($handle, content)

  • Fermer le handle fclose($handle)

  • Fonction de fonctionnement du pointeur

    • fseek (poignée, position), pointeur de réglage de positionnement, la position commence à 0 et augmente !

    • ftell(poignée), obtenez la position du pointeur !

Opération simultanée sur fichier (verrouillage de fichier)

Par défaut, la fonction d'opération de fichier de PHP n'est pas dans un état bloquant. État de fonctionnement gratuit. Par conséquent, il est facile de provoquer des erreurs lors de l'utilisation simultanée de fichiers. Lorsqu'une opération de script doit bloquer d'autres opérations de script, des verrous de fichiers doivent être utilisés.

Processus d'opération de verrouillage :
Ajoutez d'abord le verrou, vérifiez si le verrou est ajouté avec succès et réutilisez-le s'il réussit !

Type de verrouillage :

  • Verrouillage en lecture : verrouillage partagé s-lock (share-lock), le verrou supplémentaire attendu avant l'opération de lecture. Par conséquent, les lectures simultanées sont autorisées et les opérations d'écriture supplémentaires sont bloquées.

  • Verrouillage en écriture : verrouillage exclusif x-lock (verrouillage exclusif), verrouillage exclusif, essayez d'ajouter le type de verrouillage avant l'opération d'écriture. Par conséquent, les autres scripts ne peuvent ni lire ni écrire.

  • Verrouillage d'intention : tous les scripts qui exploitent des ressources suivent une convention pour utiliser les verrous de fichiers (convention).

flock($handle, type de verrouillage);
Type :

  • LOCK_SH Verrouillage en lecture

  • LOCK_EX Verrouillage en écriture

  • LOCK_UN Déverrouillage

    <?php
        //*********脚本1,想要读取文件信息***********
        //尝试加读锁
        $lock_result= flock($handle, LOCK_SH);
        //判断锁定结果
        if(!$lock_result){
            die(&#39;锁定失败,不能操作文件&#39;);
        }
        //文件操作
        $str = fgets($handle, 1024);
        var_dump($str);
    
        sleep(5);
        echo &#39;<br>&#39;;
        $str = fgets($handle, 1024);
        var_dump($str);
        flock($handle, LOCK_UN);//解锁
    ?>
    
    <?php
        //*********脚本2,想要往文件里写入信息***********
        //尝试加写锁
        $lock_result= flock($handle, LOCK_EX);
        //判断锁定结果
        if(!$lock_result){
            die(&#39;锁定失败,不能操作文件&#39;);
        }
        //文件操作
        $result = fwrite($handle, &#39;123456&#39;);
        flock($handle, LOCK_UN);//解锁
    ?>

    Lorsque des collègues s'exécutent, le script 2 ci-dessus doit attendre (dans l'état bloqué) que le script 1 soit exécuté. exécution complète. Sera exécuté, souligne qu'il faut juger si le verrou est ajouté avec succès

    Vous pouvez utiliser LOCK_NB pour ne pas bloquer lorsque le verrou échoue :

    $lock_result = flock($handle, LOCK_EX | LOCK_NB);

Déverrouiller :

  • Flock($handle, LOCK_UN) pour forcer le déverrouillage,

  • Fclose() pour automatiquement ouvrir!

Recommandations associées :

Partage d'exemples d'opérations de fichiers PHP

Introduction de base au téléchargement de fichiers PHP

Partage d'un exemple simple de téléchargement de fichier 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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn