Die bestehenden Anwendungsmethoden von PHP basieren alle auf http, was für Situationen, die schnelle Echtzeitreaktionen erfordern, relativ schwach ist, zum Beispiel bei Online-Spielen oder Push-Diensten im Allgemeinen Sie müssen eine langfristige Kommunikation mit Benutzern aufrechterhalten, um Echtzeitantworten und Push-Informationen zu erhalten.
swoole ist darauf ausgelegt, solche Anwendungsszenarien zu lösen. (Empfohlenes Lernen: SWOOLE-Video-Tutorial )
Die Implementierung von SWOOLE
Swoole ist in reinem C geschrieben und verlässt sich nicht auf andere Bibliotheken von Drittanbietern. swoole verwendet kein Libevent, daher besteht keine Notwendigkeit, Libevent zu installierenSwoole verlässt sich nicht auf PHPs Stream/Sockets/pcntl/posix/sysvmsg und andere Erweiterungensocket Ein Teil von
swoole verwendet den zugrunde liegenden Socket-Systemaufruf.IO-Ereignisschleife
Die Ereignisschleife des Hauptprozesses verwendet Select/Poll, da es im Hauptthread nur wenige Dateideskriptoren gibt. Verwenden Sie einfach Select/ pollVerwenden Sie epoll/kqueue im Reaktor-Thread/Worker-ProzessDer Task-Prozess verfügt über keine Ereignisschleife und der Prozess läuft zyklisch und blockiert die Lesepipe Viele Leute verwenden strace -p, um Swoole anzuzeigen. Der Hauptprozess kann nur den Poll-Systemaufruf sehen. Die richtige Art, es anzuzeigen, ist strace -f -pMultiprozess/Multithread
Multiprozess-Systemaufruf fork() verwendenMulti-Thread verwendet pthread-Thread-BibliothekEventFd
Swoole verwendet eventfd als Mechanismus für Thread-/Interprozess-Nachrichtenbenachrichtigungen.Timerfd
Swoole verwendet timerfd, um Timer zu implementierenSIgnalfd
signalfd wird in swoole To verwendet erreichen signal abschirmung und verarbeitung. Dadurch kann das Problem, dass Threads/Prozesse durch Signale unterbrochen werden und das System einen Neustart aufruft, effektiv vermieden werden. Der Reaktor-Thread empfängt im Hauptprozess keine Signale.Das obige ist der detaillierte Inhalt vonWelches Problem hat Swoole gelöst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!