Kaynağa Gözat

Merge pull request #1059 from chaz6chez/fix/swoole-event

fix: all coroutines must be canceled before Event::exit
walkor 1 yıl önce
ebeveyn
işleme
8e1dfd8f4e
1 değiştirilmiş dosya ile 5 ekleme ve 0 silme
  1. 5 0
      src/Events/Swoole.php

+ 5 - 0
src/Events/Swoole.php

@@ -15,6 +15,7 @@ declare(strict_types=1);
 
 namespace Workerman\Events;
 
+use Swoole\Coroutine;
 use Swoole\Event;
 use Swoole\Process;
 use Swoole\Timer;
@@ -211,6 +212,10 @@ final class Swoole implements EventInterface
      */
     public function stop(): void
     {
+        // cancel all coroutines before Event::exit
+        foreach (Coroutine::listCoroutines() as $coroutine) {
+            Coroutine::cancel($coroutine);
+        }
         Event::exit();
         posix_kill(posix_getpid(), SIGINT);
     }