La prise en charge du contrôle de processus de PHP implémente la création de processus de style Unix, l'exécution de programme, le traitement du signal et l'interruption de processus. Le contrôle de processus ne peut pas être utilisé dans un environnement de serveur Web et peut entraîner des résultats inattendus lorsqu'il est utilisé dans un environnement de service Web. (Apprentissage recommandé :
PCNTL utilise désormais les Ticks comme mécanisme de rappel pour le traitement du signal. Les Ticks dépassent de loin le mécanisme de traitement précédent. Ce changement suit la même sémantique que les « ticks utilisateur ».
Vous pouvez utiliser l'instruction declare() pour spécifier les emplacements de votre programme où les rappels sont autorisés. Cela nous permet de minimiser la surcharge liée à la gestion des événements asynchrones. L'activation de pcntl lors de la compilation de PHP entraînera toujours cette surcharge, que pcntl soit réellement utilisé dans votre script ou non. Une modification est que tous les scripts pcntl antérieurs à PHP 4.3.0 pour le faire fonctionner, utilisent declare() dans la partie (du code) où les rappels sont censés être autorisés, ou utilisent la nouvelle syntaxe globale de declare() pour le faire fonctionner Valable tout au long du script.Remarque : Cette extension n'est pas disponible sur la plateforme Windows.
swoole ajoute un module de gestion multi-processus pour remplacer pcntl de PHP. Sa différence par rapport à pcntl est :
swoole_process fournit une communication inter-processus que pcntl n'a pas. swoole_process Prend en charge la redirection des entrées et sorties standard. L'écho ou l'entrée au clavier dans le processus enfant peut être redirigé pour récupérer les données du canal. Le processus enfant peut être asynchrone Communication inter-processus (IPC)<.> Le processus enfant et le processus parent peuvent communiquer via des tuyaux et transférer des données. IPC est souvent utilisé dans la programmation multi-processus. Le module pcntl de PHP ne fournit pas de fonctions IPC, ses fonctions sont donc limitées. Le swoole_process fournit ces fonctions et encapsule l'interface. La communication inter-processus peut être complétée simplement en appelant l'interface.
$worker_num = 8; for($i = 0; $i < $worker_num; $i++) { $process = new swoole_process('callback_function', $redirect_stdout); $pid = $process->start(); $workers[$pid] = $process; } function callback_function(swoole_process $worker) { //echo "Worker: start. PID=".$worker->pid."\n"; //recv data from master $recv = $worker->read(); echo "From Master: $recv\n"; //send data to master $worker->write("hello master\n"); sleep(2); $worker->exit(0); }
read/write 2 méthodes consistent à lire et écrire des données dans le tube. Le processus principal peut écrire et lire des données sur le processus enfant via l'écriture/lecture.
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!