Maison > cadre php > Swoole > Pourquoi Swoole ne peut-il pas dormir ?

Pourquoi Swoole ne peut-il pas dormir ?

WBOY
Libérer: 2022-04-13 15:09:28
original
2743 Les gens l'ont consulté

Parce que dans Swoole, l'utilisation de la fonction Sleep entraînera le blocage du processus de sommeil ; seuls les signaux peuvent interrompre le processus de sommeil. Étant donné que le signal de Swoole est basé sur signalfd, le sommeil ne peut pas être interrompu même si un signal est envoyé, seulement jusqu'à ce que le signal soit envoyé. heure spécifiée Ce n'est qu'à ce moment-là que le système d'exploitation réveillera le processus en cours.

Pourquoi Swoole ne peut-il pas dormir ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Swoole 4, ordinateur DELL G3

Pourquoi swoole ne peut pas utiliser sleep

Dans les programmes IO asynchrones, sleep/usleep/time_sleep_until/time_nanosleep n'est pas autorisé. (le sommeil est utilisé ci-dessous pour désigner toutes les fonctions de veille en général) La fonction de veille entraînera le blocage du processus de veille. Le système d'exploitation ne réveillera pas le processus en cours avant l'heure spécifiée. Pendant le processus de veille, seuls les signaux. peut être interrompu

  • Étant donné que le traitement du signal de Swoole est basé sur signalfd, le sommeil ne peut pas être interrompu même si un signal est envoyé

  • Swoole_event_add, swoole_timer_tick, swoole_timer_after, swoole_process::signal, swoole_client asynchrone fourni par Swoole sont dans le processus le sommeil cessera de fonctionner plus tard. swoole_server ne peut plus gérer les nouvelles requêtes.

  • Programme d'instance

    $serv = new swoole_server("127.0.0.1", 9501);
    $serv->set(['worker_num' => 1]);
    $serv->on('receive', function ($serv, $fd, $from_id, $data) {
        sleep(100);
        $serv->send($fd, 'Swoole: '.$data);
    });
    $serv->start();
    Copier après la connexion
  • La fonction sleep est exécutée dans l'événement onReceive et le serveur ne peut plus recevoir de requêtes client dans les 100 secondes.
  • Apprentissage recommandé :

    Tutoriel swoole

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal