Heim > Backend-Entwicklung > PHP-Tutorial > Der PHP-Programmierer, der von Swoole zum Weinen gebracht wurde

Der PHP-Programmierer, der von Swoole zum Weinen gebracht wurde

WBOY
Freigeben: 2016-07-29 09:15:20
Original
1049 Leute haben es durchsucht

Dieser Artikel beschreibt hauptsächlich den Prozess des Erlernens von Swoole, die Fallstricke, die gemeistert wurden, und wie kraftvoll Swoole ist!

Lassen Sie mich zunächst über mein Verständnis von Swoole sprechen: ein in PHP gekleidetes C-Programm. Viele PHPer-Freunde sahen die leistungsstarken Funktionen von swoole und die Bewunderung der Außenwelt, also installierten sie eifrig, debuggten die Demo, schrieben neue Funktionen und beeilten sich, es einander aufgeregt zu erzählen. Nach ein paar Tagen, wenn Sie Swoole weiterhin nach Ihrem eigenen Verständnis verwenden, stellen Sie fest, dass der Code nicht wie erwartet ausgeführt wird, und dann fangen Sie an zu fluchen, was für eine Scheiße, der Code ist im Grunde derselbe wie die Demo , warum funktioniert es nicht? Welche Unsinnsarbeit, Aufgaben, Shared Memory, IPCs, Asynchronität, alle möglichen Fragen tauchten auf, und dann überprüfte ich schnell die offiziellen Dokumente und stellte fest, dass diese in den Dokumenten nicht erwähnt wurden, sondern eine kurze Einführung in die Verwendung. Zu diesem Zeitpunkt hatte ich fast die Hoffnung verloren.

Der PHP-Programmierer, der von Swoole zum Weinen gebracht wurde

Mehrere Probleme aufgetreten:

1: Über das Global, das häufig in PHP verwendet wird Warum Kann die Variable (global) nicht in der onRequest-Funktion verwendet werden?

Da es sich bei Swoole um eine Multithread-Programmierung handelt, kann Global nicht von mehreren Prozessen gemeinsam genutzt werden. Zum Beispiel

<ol>
<li><span><span>global $i = </span><span>0</span><span>; </span></span></li>
<li><span> </span></li>
<li><span>function onRequest() { </span></li>
<li><span> </span></li>
<li><span>    echo $i++; </span></li>
<li><span> </span></li>
<li><span>} </span></li>
</ol>
Nach dem Login kopieren

Wenn Sie das obige Programm in Swoole schreiben, gibt es nicht bei jedem Zugriff eine steigende Zahl aus. Wenn Sie den erwarteten Effekt erzielen möchten, müssen Sie die zugehörigen Funktionen von swoole_table verwenden.

2: Was ist asynchron und was ist Rückruf?

Für PHPer ist das Verständnis von asynchron und Rückruf wahrscheinlich Ajax. Als ich die Erklärung von Asynchronität und Rückrufen in Swoole sah, schien es sehr einfach zu sein, also habe ich Swoole voreilig verwendet, ohne Erfahrung in der Multithread-Bearbeitung. Infolgedessen wurde ich dazu verleitet, mehrere Nächte lang heimlich zu programmieren, um meine eigenen Fallstricke zu schließen.

3: Warum sind die von onReceive empfangenen Daten so groß?

Der Server kann mehrere vom Client gesendete Anfragen gleichzeitig empfangen. Es ist nicht so, dass der Client einmal sendet und der Server einmal empfängt

4: Selbstgemachter httpserve

Schreiben Sie einen http-Server und greifen Sie dann über ihn darauf zu Der Browser Dieser hausgemachte Server aktualisiert den Browser. Warum erhält der Server zwei Anfragen? Dieses Problem beunruhigt wahrscheinlich viele Freunde, die swoole zum ersten Mal zum Schreiben von httpserver verwenden. Weil der Browser eine weitere favicon.ico-Anfrage sendet.

Grund

Der Grund für diese Situation ist eigentlich sehr einfach. Der Hauptzweck von PHP besteht darin, Web- und Schreibgeschäfte zu erstellen Logik. Nur wenige Menschen verstehen die Entwicklung von Serverprogrammen. Einmal benutzte ein Freund Swoole, um einen einfachen Server und einen Client zu schreiben. Er fragte mich, warum ich keine Daten empfangen konnte, obwohl ich kurz auf den Code schaute und feststellte, dass alle Verbindungen erfolgreich waren Die Enden waren erfolgreich eingerichtet und der Code war in Ordnung. Am Ende stellte ich fest, dass sowohl der Server als auch der Client Rückruffunktionen für den Empfang von Nachrichten festgelegt hatten, aber keines der Enden eine Nachricht an das andere gesendet hatte An beiden Enden herrschte Patt. Dann gaben die Beamten von Swoole keine Erklärung zu dieser Frage des gesunden Menschenverstands ab, sondern sprachen lediglich darüber, wie man Rückrufe einrichtet, wie man Nachrichten sendet, wie man dies und wie man das macht. Für Studenten mit serverseitiger Entwicklungserfahrung wird dieses Problem definitiv nicht auftreten. Im Swoole-Dokument muss die Notwendigkeit nicht angegeben werden, da dies dem gesunden Menschenverstand entspricht. Für PHPer ist es jedoch sehr wichtig, diesen Punkt anzugeben, da PHPer, wie oben erwähnt, nicht über dieses Wissen verfügt. Dies können nur Programmierer mit serverseitiger Entwicklungserfahrung .

Funktionen von Swoole: Netzwerkkommunikations-Framework, asynchron, Multithreading. Diese Funktionen sind genau die unvollkommenen Funktionen von PHP (obwohl der Beamte viele grundlegende Funktionen bereitstellt, um diese Funktionen zu erreichen, fehlt es jedoch an chinesischer Dokumentation, und nur wenige Leute verwenden PHP, um diese Funktionen zu implementieren. Gewöhnliches PHP verfügt nicht über das grundlegende Verständnis). Wissen Sie, wenn Sie Swoole vorschnell verwenden, werden Sie unweigerlich auf einige Probleme mit dem gesunden Menschenverstand stoßen, die auf der offiziellen Swoole-Website nicht zu finden sind.

Fähigkeiten, die beherrscht werden müssen, um swoole verwenden zu können

  1. Multithread-Programmierung

  2. Interprozesskommunikation

  3. Erkennung des Netzwerkprotokolls TCP/UDP

  4. Grundkenntnisse von PHP

Persönliche Erfahrung beim Erlernen von Swoole

Vor langer Zeit war ich auch ein Programmierer, der nur PHP kannte. Nachdem ich es eine Weile verwendet hatte, stellte ich fest, dass ich einige einzigartige Bedürfnisse hatte, also begann ich damit Schauen Sie sich den Quellcode an. Das ist wirklich schwer zu erkennen, aber Sie werden auf den ersten Blick schockiert sein. Im Inneren befindet sich eine Tokyo Cabinet-Datenbank. Meiner Meinung nach umfasst der gepackte Code nur mehr als 100 Zeilen. Die Hauptidee besteht darin, libevent in der C-Sprache zu verwenden, um einen HTTP-Server zum Empfangen von Lese- und Schreibanforderungen für die Tokyo Cabinet-Datenbank zu erstellen. Damals gab es tatsächlich viele Programme, die auf dieser Idee basierten. Später kam mir plötzlich der Gedanke, dass PHP Libevent definitiv verwenden kann, um das Netzwerk zu überwachen, die Datenbank nach Erhalt der Anforderung zu lesen und zu schreiben und den Warteschlangen-Dienst auszuführen, da die C-Sprache die Libevent-Funktion verwenden kann. Später, nachdem ich die offizielle PHP-Dokumentation überprüft hatte, stellte ich fest, dass PHP ein vollständiges Funktionssystem zur Vervollständigung dieser Funktionen bereitstellt und sogar einen vollständigen Satz von Multithread-Funktionen bereitstellt. Es gibt jedoch zu wenige chinesische Dokumente und ausgereiften Code sind selten online zu finden. Als letzten Ausweg lernte ich die Grundprinzipien der Linux-C-Multithread-Entwicklung und die gängigen Methoden der Interprozesskommunikation kennen und nutzte sie auch, um einige einfache Demos zu erstellen. Das einzige Gefühl ist, dass das Schreiben einer einfachen Funktion wirklich kompliziert zu entwerfen ist. Gerade als ich aufgeben wollte, tauchte Swoole auf. Die von swoole bereitgestellten Funktionen sind genau die Funktionen, die in PHP fehlen, was einfach großartig ist. Als Netzwerkkommunikations-Framework benötigt swoole nur ein paar einfache Einstellungszeilen, um einen Server einzurichten. Von nun an werden wir den Geschäftscode weiter verbessern. Ich habe in der libevent-Kommunikationsgruppe erfahren, dass das Design von Swoole nicht das beste Framework-Design in CC ist, aber sein Highlight ist, dass die Grundfunktionen in C gekapselt sind und die Geschäftsfunktionen in PHP, der besten Sprache der Welt, geschrieben werden müssen . Seitdem hat Swooles Reise, Löcher zu füllen, begonnen.

Zusammenfassung

swoole ist kein einfaches PHP-Framework, wie es im ersten Satz der offiziellen Homepage von swoole heißt: „ Definieren Sie PHP neu“, schreiben Sie keinen schwammigen Code mit der alten PHP-Denkweise! swoole reaktiviert PHP und PHP macht swoole!

Das Obige stellt die PHP-Programmierer vor, die von Swoole ausgetrickst wurden, und ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage