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.
L'environnement d'exploitation de ce tutoriel : système Windows 10, version Swoole 4, ordinateur DELL G3
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.
$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();
Apprentissage recommandé :
Tutoriel swooleCe 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!