Mit verschiedenen Versionen von Curl wird die Testversion in PHP unterschiedlich. Es gibt zwar immer noch Verwirrung über die Verwendung von Curl im Internet, aber es gibt keine Erklärung. Ich werde die Informationen, die ich gefunden habe, mit Ihnen teilen
Zunächst einige Funktionen
curlm_multi_init
Diese Funktion gibt ein CURLM-Handle zurück, das als Eingabe für alle anderen Multifunktionsfunktionen verwendet wird und an einigen Stellen in der Dokumentation manchmal als Multi-Handle bezeichnet wird
MUSS einen entsprechenden Aufruf von curl_multi_cleanup haben, wenn
Der Vorgang ist abgeschlossen.
Diese Funktion gibt ein CURLM-Handle zurück, das als Eingabe für alle anderen Multifunktionsfunktionen verwendet wird, d. h. als Parameter übergeben wird, dieser Initialisierungsaufruf muss einen entsprechenden Funktionsaufruf curl_multi_cleanup haben, wenn der Vorgang abgeschlossen ist
curl_multi_exec
Diese Funktion ruft tatsächlich die zugrunde liegende Funktion „curl_multi_perform“ auf. Schauen wir uns die einfachste Beschreibung im Dokument an.
Es ist so:
liest/schreibt verfügbare Daten von jedem einfachen Handle
Ins Chinesische übersetzt: liest oder schreibt von jedem Handle. Verfügbare Daten
Es gibt einen Absatz unten
Diese Funktion verarbeitet Übertragungen auf allen hinzugefügten Handles, die Aufmerksamkeit erfordern, auf nicht blockierende Weise.
Wenn eine Anwendung herausgefunden hat, dass Daten für verfügbar sind Wenn das multi_handle oder eine Zeitüberschreitung abgelaufen ist, sollte die Anwendung diese Funktion aufrufen, um alles zu lesen/schreiben, was gerade zu lesen oder zu schreiben ist usw. curl_multi_perform gibt zurück Sobald die Lese-/Schreibvorgänge abgeschlossen sind, erfordert, dass tatsächlich Daten zum Lesen verfügbar sind oder dass Daten geschrieben werden können, kann sie nur für den Fall aufgerufen werden. Sie schreibt die Nummer von Handles, die im zweiten noch Daten übertragen Ganzzahlzeiger des Arguments.
Wenn sich die Anzahl der running_handles gegenüber dem vorherigen Aufruf geändert hat (oder geringer ist als die Anzahl der einfachen Handles, die Sie dem Multi-Handle hinzugefügt haben), wissen Sie Bescheid dass es eine oder mehrere Überweisungen gibt less „running“. Anschließend können Sie „curl_multi_info_read“ aufrufen, um Informationen über jede abgeschlossene Person zu erhalten übertragen, und die zurückgegebenen Informationen includes CURLcode und mehr. Wenn ein hinzugefügtes Handle sehr schnell fehlschlägt, wird es möglicherweise nie als Running_Handle gezählt.
Wenn Running_handles ist Bei der Rückkehr dieser Funktion auf Null (0) gesetzt, sind keine Übertragungen mehr im Gange.
Sehen wir uns an, was diese Passage sagt:
Diese Funktion verarbeitet alle Datentransfers auf der Handle hinzugefügt: Wenn ein referenzierendes Programm zu verarbeitende Daten findet oder eine Zeitüberschreitung auftritt, sollte die Funktion zurückkehren, wenn der Lese- oder Schreibvorgang abgeschlossen ist. Es sind keine zu lesenden Daten vorhanden geschrieben und kann in jedem Fall aufgerufen werden. Nach dem Aufruf dieser Funktion wird der zweite an sie übergebene Parameter (running -handles) festgelegt, der angibt, wie viele weitere aktive Verbindungen vorhanden sind.
Wenn running-handles aufgerufen wird Aus dem vorherigen Aufruf geht hervor, dass die Übertragung abgeschlossen ist oder ein Übertragungsfehler aufgetreten ist. Um den Übertragungsstatus jeder Verbindung anzuzeigen, müssen Sie die Funktion „curl-multi -read-info“ aufrufen. Sie gibt ein Array zurück enthält drei Daten. Weitere Informationen finden Sie im PHP-Hilfedokument.
Wenn run-handles von Curl auf 0 gesetzt wird, bedeutet dies, dass alle Übertragungen abgeschlossen sind.
Sie sind möglicherweise verwirrt über den Rückgabewert, oder? ?
CURLMcode-Typ, allgemeiner libcurl-Multi-Interface-Fehlercode.
Vor Version 7.20.0: Wenn Sie CURLM_CALL_MULTI_PERFORM erhalten, Dies bedeutet im Grunde, dass Sie „curl_multi_perform“ erneut aufrufen sollten, bevor Sie „select()“ für weitere Aktionen ausführen. Sie müssen dies nicht sofort tun, aber der Rückkehrcode bedeutet, dass libcurl möglicherweise mehr Daten zum Zurückgeben zur Verfügung hat oder dass mehr Daten gesendet werden müssen, bevor es „erfüllt“ ist. Beachten Sie, dass „curl_multi_perform“ dies tut Nur CURLM_CALL_MULTI_PERFORM zurückgeben wenn es sofort erneut aufgerufen werden soll. Wenn alles in Ordnung ist und nichts Sofortiges erledigt werden soll, wird CURLM_OK zurückgegeben Sie müssen auf „Aktion“ warten und diese Funktion dann erneut aufrufen.
Diese Funktion gibt nur Fehler usw. zurück, die den gesamten Multi-Stack betreffen. Es können auch dann noch Probleme bei einzelnen Übertragungen aufgetreten sein, wenn diese Funktion CURLM_OK zurückgibt . Verwenden Sie curl_multi_info_read, um herauszufinden, wie einzelne Überweisungen funktionierten.
Wenn Sie vor Version 7.20.0 CURLM_CALL_MULTI_PERFORM erhalten, bedeutet dies, dass Sie die Funktion „curl_multi_perform“ erneut aufrufen sollten. Wenn keine Daten zur Verarbeitung vorhanden sind, wird vor dem Aufruf von „curl_multi_select“ CURLM_OK zurückgegeben, und Sie müssen nur auf die Funktion warten Aktion. (Lassen Sie uns vorerst Aktion als Aktion verstehen, da ich wirklich kein besseres Wort finden kann.) Wenn CURLM_OK zurückgegeben wird, müssen Sie nur warten, bis (Hinweis), hier ist der Curl_multi_select, den wir aufgerufen haben, nur er gibt den Wert -1 zurück, egal was passiert, er wird nicht auf eine Aktion warten, aber nach der USleep-Periode wird immer noch curl-multi-perform aufgerufen, was möglicherweise keinen Sinn ergibt, aber es gibt keine Möglichkeitcurl_multi_select
Lass uns zuerst über die Funktion dieser Funktion sprechen
Für den folgenden Code
while($still_running && $result== CURLM_OK)
{
tun
{
$result=curl_multi_exec($mh,$ still_running) ;
}while($result==CURLM_CALL_MULTI_PERFORM);
}
Wenn Sie curl_multi_select in diesem Code nicht verwenden, können Sie Sie werden feststellen, dass die CPU ungeheuerlich ist. Dies wirkt sich auf die Effizienz Ihrer CPU-Auslastung aus, da dieser bedeutungslose Code (für einen bestimmten Zeitraum) weiterhin aufgerufen wird.
Diese Funktion befindet sich in PHP Im Hilfedokument wird erklärt, dass
blockiert, bis eine aktive Verbindung in der cURL-Batch-Verbindung besteht
Mit anderen Worten: Wenn keine Datenübertragung erkannt wird, wird es blockiert, aber Sie müssen Achtung Ja, der folgende Code ist in der aktuellen Version nicht anwendbar,
while($still_running && $result==CURLM_OK)
{
if(curl_multi_select($mh)!=-1)
{
do
{
$result=curl_multi_exec($mh,$still_running);
}while($result==CURLM_CALL_MULTI_PERFORM);
}
}
Es ist wirklich bedauerlich, dass dieser Code in eine tote Schleife fällt Wenn Sie den Grund dafür herausfinden, werden Sie feststellen, dass curl_multi_select nur -1 zurückgibt, was bedeutet, dass der darin enthaltene Inhalt nie vorhanden ist aufgerufen wurde. Was zu tun ist, es werden zumindest keine Fehler auftreten, wenn Sie diesen Code sehen
while($still_running && $result==CURLM_OK)
{
if(curl_multi_select($mh)==-1)
{
usleep(100);//Dies muss von Ihnen selbst geschrieben werden , Sie können es selbst entscheiden, die offizielle Empfehlung ist 100ms
}
tun
{
$result=curl_multi_exec($mh, $still_running ;
curl_multi_info_readDiese Funktion ist im PHP-Hilfedokument sehr klar angegeben Abfrage, ob sich das Batch-Handle in einem befindet separater Übertragungsthread Es werden Neuigkeiten oder Informationen zurückgegeben. Nachrichten können Fehlercodes enthalten, wie sie beispielsweise von einzelnen Übertragungsthreads zurückgegeben werden, oder einfach Berichte darüber, ob der Übertragungsthread abgeschlossen wurde. Gibt bei Erfolg eine Reihe verwandter Informationen zurück und gibt
bei Fehler zurück.
Laut meinem Test gibt es bei einer Meldung nur zwei mögliche Situationen:
1. Die Übertragung wurde abgeschlossen FALSE
2. Übertragungsfehler
Das ist mein Ergebnis
curl_multi_getcontent($res)
Diese Funktion ist viel einfacher
Wenn festgelegt
, dann den erhaltenen Ausgabetextstrom zurückgebenBeachten Sie, dass der $res-Parameter ein bestimmtes Curl-Handle ist
CURLOPT_RETURNTRANSFER
Das Folgende ist a URL für alle empfohlen. :
Hier erfahren Sie, wie Sie die Parameter von curl_setopt einstellen. Darin liegt schließlich das ganze Geheimnis von Curl
Das Obige stellt die Verwendung von Curl in PHP vor, einschließlich seiner Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

Zu den wichtigsten Spielern in HTTP-Cache-Headern gehören Cache-Control, ETAG und Last-modifiziert. 1.Cache-Control wird verwendet, um die Richtlinien zu kontrollieren. Beispiel: Cache-Control: max-ay = 3600, öffentlich. 2. ETAG überprüft Ressourcenänderungen durch eindeutige Identifikatoren, Beispiel: ETAG: "686897696A7C876B7E". 3. Last-modifiziert gibt die letzte Änderungszeit der Ressource an, Beispiel: Last-Modified: Mi, 21okt201507: 28: 00GMT.

In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP ist eine serverseitige Skriptsprache, die für dynamische Webentwicklung und serverseitige Anwendungen verwendet wird. 1.PHP ist eine interpretierte Sprache, die keine Zusammenstellung erfordert und für die schnelle Entwicklung geeignet ist. 2. PHP -Code ist in HTML eingebettet, wodurch es einfach ist, Webseiten zu entwickeln. 3. PHP verarbeitet die serverseitige Logik, generiert die HTML-Ausgabe und unterstützt Benutzerinteraktion und Datenverarbeitung. 4. PHP kann mit der Datenbank interagieren, die Einreichung von Prozessformularen und serverseitige Aufgaben ausführen.

PHP hat das Netzwerk in den letzten Jahrzehnten geprägt und wird weiterhin eine wichtige Rolle bei der Webentwicklung spielen. 1) PHP stammt aus dem Jahr 1994 und ist aufgrund seiner Benutzerfreundlichkeit und der nahtlosen Integration in MySQL die erste Wahl für Entwickler. 2) Zu den Kernfunktionen gehört das Generieren dynamischer Inhalte und die Integration in die Datenbank, sodass die Website in Echtzeit aktualisiert und auf personalisierte Weise angezeigt wird. 3) Die breite Anwendung und das Ökosystem von PHP hat seine langfristigen Auswirkungen angetrieben, steht jedoch auch mit Versionsaktualisierungen und Sicherheitsherausforderungen gegenüber. 4) Leistungsverbesserungen in den letzten Jahren, wie die Veröffentlichung von PHP7, ermöglichen es ihm, mit modernen Sprachen zu konkurrieren. 5) In Zukunft muss PHP sich mit neuen Herausforderungen wie Containerisierung und Microservices befassen, aber seine Flexibilität und die aktive Community machen es anpassungsfähig.

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft