Maison  >  Article  >  développement back-end  >  Comment utiliser la fonction pcntl pour faire fonctionner plusieurs processus en PHP

Comment utiliser la fonction pcntl pour faire fonctionner plusieurs processus en PHP

墨辰丷
墨辰丷original
2018-06-12 13:49:191268parcourir

Cet article présente principalement l'utilisation du multi-processus pcntl de PHP. Il analyse les compétences d'utilisation de pcntl pour faire fonctionner le multi-processus avec des exemples. Il est d'une grande valeur pratique. Les amis dans le besoin peuvent s'y référer. 🎜>Cet article décrit l'utilisation de PHP avec des exemples d'utilisation multi-processus de pcntl. L'analyse spécifique est la suivante :

PHP peut également gérer une transaction avec plusieurs processus en utilisant la série de fonctions PCNTL. Par exemple, je dois obtenir 800 000 données de la base de données, puis effectuer une série de traitements ultérieurs. À ce stade, dois-je utiliser un seul processus ? Vous pouvez attendre jusqu'à aujourd'hui l'année prochaine. Vous devez donc utiliser la fonction pcntl.

Supposons que je veuille démarrer 20 processus et diviser 1 à 80 w de données en 20 parties. Le processus principal attend la fin de tous les processus enfants avant de quitter :

Voici After pcntl_fork. sort, une valeur pid sera renvoyée. Ce pid est 0 dans le processus enfant, et est le pid du processus enfant (>0) dans le processus parent. Si le pid est -1, cela signifie que le fork s'est mal passé. .
$max = 800000;
$workers = 20;
$pids = array();
for($i = 0; $i < $workers; $i++){
  $pids[$i] = pcntl_fork();
  switch ($pids[$i]) {
    case -1:
      echo "fork error : {$i} \r\n";
      exit;
    case 0:
      $param = array(
        &#39;lastid&#39; => $max / $workers * $i,
        &#39;maxid&#39; => $max / $workers * ($i+1),
      );
      $this->executeWorker($input, $output, $param);
      exit;
    default:
      break;
  }
}
foreach ($pids as $i => $pid) {
  if($pid) {
    pcntl_waitpid($pid, $status);
  }
}

L'utilisation d'un tableau $pids permet au processus principal d'attendre que tous les processus soient terminés avant de le terminer

Résumé

 : Ce qui précède est tout le contenu de cet article, je j'espère que cela pourra aider l'apprentissage de chacun. Recommandations associées :

La base de données en PHP implémente des fonctions de connexion permanente plus sécurisées et de mémorisation de moi

Utilisation générée en PHP Méthodes de cryptage et décryptage des clés publiques et des clés privées

php enregistre les noms d'utilisateur et les mots de passe basés sur des cookies

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