Rechercher une fonction PHP

Introduction

Cette extension fournit un système POSIX I/O asynchrone via la bibliothèque C » libeio écrit par Marc Lehmann.

Note: Cette extension n'est pas disponible sur les plates-formes Windows.

Avertissement

Il est important de noter que chaque demande est exécuté dans un thread, et l'ordre d'exécution des demandes en attente n'est pas assuré. Pour l'instant, le code suivant n'est pas correct.

Exemple #1 Demandes incorrectes

<?php
// Demande la création d'un lien symbolique $filename vers $link
eio_symlink($filename$link);

// Demande de déplacement de $filename vers $new_filename
eio_rename($filename$new_filename);

// Exécution des demandes
eio_event_loop();
?>
Dans l'exemple ci-dessus, la fonction eio_rename() peut se terminer avant la fonction eio_symlink(). Pour résoudre ce problème, vous pouvez appeler la fonction eio_rename() dans la fonction de rappel de la fonction eio_symlink():

Exemple #2 Exécution d'une demande dans la fonction de rappel d'une autre

<?php
function my_symlink_done($filename$result) {
 
// Demande de déplacement de $filename vers $new_filename
 
eio_rename($filename"/path/to/new-name");

 
// Exécution des demandes
 
eio_event_loop();
}

// Demande de création d'un lien symbolique $filename vers $link
eio_symlink($filename$linkEIO_PRI_DEFAULT"my_symlink_done"$filename);

// Exécution des demandes
eio_event_loop();
?>
Alternativement, vous pouvez créer un groupe de demandes :

Exemple #3 Exécution d'une demande depuis la fonction de rappel d'une autre

<?php
/* Sera appelé lorsque le groupe de demandes aura terminé */
function my_grp_done($data$result) {
 
// ...
}

function 
my_symlink_done($filename$result) {
 
// Crée une demande eio_rename et l'ajoute au groupe
 
$req eio_rename($filename"/path/to/new-name");
 
eio_grp_add($grp$req);
 
// Vous pouvez vouloir d'autres actions...
}

// Création d'un groupe de demandes
$grp eio_grp("my_grp_done""my_grp_data");

// Crée une demande eio_symlink et l'ajoute au groupe
// Passage de $filename à la fonction de rappel
$req eio_symlink($filename$link,
  
EIO_PRI_DEFAULT"my_symlink_done"$filename);
eio_grp_add($grp$req);

// Exécution des demandes
eio_event_loop();
?>
Un groupe est une demande spéciale qui peut cumuler un jeu de demandes eio. Ce mécanisme peut être utile pour créer une demande complexe qui ouvre, lit et ferme un fichier.

Depuis la version 0.3.0 alpha, une variable utilisée dans les communications internes avec libeio peut être récupérée avec la fonction eio_get_event_stream(). La variable peut être utilisé pour lier une boucle d'événements avec d'autres extensions. Vous pouvez organiser une boucle d'événements où libeio et libevent fonctionnent ensemble :

Exemple #4 Utilisation de eio et libevent

<?php
function my_eio_poll($fd$events$arg) {
    
/* Quelques régulations libevent peuvent venir ici .. */
    
if (eio_nreqs()) {
        
eio_poll();
    }
    
/* .. et ici */
}

function 
my_res_cb($d$r) {
    
var_dump($r); var_dump($d);
}

$base event_base_new();
$event event_new();

// Ce flux est utilisé pour se lier avec libevent
$fd eio_get_event_stream();

eio_nop(EIO_PRI_DEFAULT"my_res_cb""nop data");
eio_mkdir("/tmp/abc-eio-temp"0750EIO_PRI_DEFAULT"my_res_cb""mkdir data");
/* d'autres appels eio_* ici ... */


// Définit les drapeaux des événements
event_set($event$fdEV_READ /*| EV_PERSIST*/"my_eio_poll", array($event$base));

// Définit l'événement de base
event_base_set($event$base);

// Active l'événement
event_add($event);

// Démarre la boucle des événements
event_base_loop($base);

/* La même chose est disponible via l'interface libevent bufferisée */
?>

Rechercher une fonction PHP

Version en cache

24/12/2024 14:55:44 Cette version de la page est en cache (à la date du 24/12/2024 14:55:44) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-intro.eio.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut