Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 20h30   #1
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
Par défaut [all version][pcntl] fonctionnement des signaux

Hello,

J'ai travaillé récemment avec les fonctions pcntl de php, j'ai bien réussit à faire ce que je souhaitais, lancer des fork parrallèles et se donner quelques moyens de les contrôler.

Cependant, lorsque je vérifie l'état du fork, je dois faire un appel de fonction que je ne comprend pas bien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
...
    /**
     * Test if a child has ended, must be used in master process
     *
     * @return bool
     */
    public function has_ended(){
        if( !$this->has_ended && $this->has_started){
            $pid_infos = pcntl_waitpid($this->pid, $status, WNOHANG);
            if( $pid_infos > 0 ){
                $this->ended_status             = $status;
                $this->has_ended                = true;
                $this->has_ended_with_success   = true;
            }elseif( $pid_infos == -1 ){
                ///----------------------
                if( pcntl_wifexited($status) ){ // Normal exit
                    $this->has_ended_with_success   = true;
                    $this->ended_status             = $status;
                    $this->has_ended                = true;
                }elseif( pcntl_wifsignaled($status) ){ // Signal exit
                    // Should to some tests to get correct status
                    $this->has_ended_with_success   = false;
                    $this->ended_status             = $status;
                    $this->has_ended                = true;
                }
                ///----------------------
            }
        }
        return $this->has_ended;
    }
...
C'est cette fonction pcntl_wifsignaled, j'ai vu que cela correspondait à une gestion par signal des fork.
Mais la doc n'est pas très claire sur le sujet....
C'est la dessus que je cherche des explications, sans qu'il y ai trois pages de doc à se farcir

En fait, au dela de comprendre, je me demandais si ce système pouvait être utiliser pour contrôler les processus, l'utiliser pour envoyer des messages simples entre les forks.

un truc plus propre que des boucles dans des boucles

merci de vos éclaircissements,
a+
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h10.


 
 
 
 
Partenaires

Hébergement Web