8.25 Direct IO
8 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . dio_close ->dio_fcntl . dio_open . dio_read . dio_seek . dio_stat . dio_tcsetattr . dio_truncate . dio_write
|
8.25.7 dio_fcntl()Exécute une fonction fichier de langage C[ Exemples avec dio_fcntl ] PHP 4 >= 4.2.0, PHP 5
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
.
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.
-
"wenth" - 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)
cmd
peut être l'une des 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
attent 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 aucune 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 .
Définition et effacement d'un verrou |
<?php
$fd = dio_open('/dev/ttyS0', O_RDWR);
if (dio_fcntl($fd, F_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); ?>
|
Note |
Cette fonction n'est pas
implémentée sous Windows.
|
|