Fonctions Direct IO
PHP Manual

dio_fcntl

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5)

dio_fcntlExécute une fonction fichier de langage C

Description

mixed dio_fcntl ( resource $fd , int $cmd [, mixed $args ] )

dio_fcntl() exécute l'opération cmd sur le fichier représenté par la ressource fd. Certaines commandes demandent des arguments supplémentaires qui sont fournis dans l'argument args.

Liste de paramètres

fd

La ressource de fichier retournée par dio_open().

cmd

Peut être une de ces opérations suivantes :

  • F_SETLK : le verrou est posé ou levé. Si le verrou appartient à un autre utilisateur, dio_fcntl() retourne -1.

  • F_SETLKW : identique à F_SETLK, mais si le verrou appartient à quelqu'un d'autre, dio_fcntl() attend la levée du verrou.

  • F_GETLK : dio_fcntl() retourne un tableau associatif (comme décrit ci-dessus) si un autre utilisateur empêche la poste d'un verrou. S'il n'y a aucun empêchement, l'entrée "type" prendra la valeur F_UNLCK.

  • F_DUPFD : trouve les numéros de ressource de fichier les plus petits, disponibles, inférieurs ou égales à args et les retourne.

  • F_SETFL : configure les descripteurs de fichier à la valeur spécifiée par args, qui peut être O_APPEND, O_NONBLOCK ou O_ASYNC. Pour utiliser O_ASYNC vous aurez besoin de l'extension PCNTL.

args

args est un tableau associatif lorsque cmd vaut F_SETLK ou F_SETLLW, avec les entrées suivantes :

  • start : offset de début de verrou

  • length : taille de la surface verrouillée. Zéro indique la fin du fichier

  • whence : l_start est relatif à : peut être SEEK_SET, SEEK_END et SEEK_CUR

  • type : type de verrou. peut être F_RDLCK (verrou en lecture), F_WRLCK (verrou en écriture) ou F_UNLCK (déverrouillage)

Valeurs de retour

Retourne le résultat d'un appel en C.

Exemples

Exemple #1 Positionnement et suppression d'un verrou

<?php

$fd 
dio_open('/dev/ttyS0'O_RDWR);

if (
dio_fcntl($fdF_SETLK, Array("type"=>F_WRLCK)) == -1) {
   
// le descripteur de fichier semble verrouillé
   
echo "Le verrou n'a pu être effacé. Il a été posé par quelqu'un d'autre.";
} else {
   echo 
"Le verrou a été défini/verrouillé avec succès";
}

dio_close($fd);
?>

Notes

Note: Cette fonction n'est pas implémentée sous Windows.


Fonctions Direct IO
PHP Manual