La fonction Curl_Multi_Remove_Handle est utilisée pour supprimer une poignée de boucle séparée d'une poignée de boucle multiple. Plusieurs poignées Curl nous permettent d'exécuter plusieurs demandes simultanément, et il gère centralement plusieurs poignées de curl. Lorsqu'une demande est terminée ou que nous n'en avons plus besoin, nous pouvons utiliser CURL_MULTI_REMOVE_HANDLE pour supprimer la demande de la poignée multiple.
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span> ( resource </span><span><span class="hljs-variable">$multi_handle</span></span><span> , resource </span><span><span class="hljs-variable">$ch</span></span><span> )
</span></span>
$ Multi_handle : une ressource multi-manche Curl, généralement une poignée initialisée par curl_multi_init () .
$ ch : Une ressource de poignée Curl distincte qui doit être supprimée, généralement une poignée initialisée par Curl_init () .
La valeur de retour de cette fonction est une valeur booléenne, qui renvoie true lorsqu'il est réussi, et faux lors de l'échec.
En règle générale, lors de l'exécution de plusieurs demandes de curl, nous initialiserons une poignée Curl multiple à l'aide de curl_multi_init () et ajouterons plusieurs poignées de curl distinctes via Curl_Multi_Add_Handle () . Une fois la demande terminée ou une erreur, nous devons supprimer la poignée séparée correspondante des multiples poignées, puis nous pouvons utiliser Curl_Multi_Remove_Handle .
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// initialisation multi cURL Poignée</span></span><span>
</span><span><span class="hljs-variable">$multi_handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_init</span></span><span>();
</span><span><span class="hljs-comment">// initialisation两个单独的 cURL Poignée</span></span><span>
</span><span><span class="hljs-variable">$ch1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>();
</span><span><span class="hljs-variable">$ch2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>();
</span><span><span class="hljs-comment">// Définir le premier demandé URL et d'autres options</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>, CURLOPT_URL, </span><span><span class="hljs-string">'http://example.com/api/endpoint1'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Définir la deuxième demande URL et d'autres options</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>, CURLOPT_URL, </span><span><span class="hljs-string">'http://example.com/api/endpoint2'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Mettez ces deux cURL Poignée添加到 multi cURL Poignée中</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>, </span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-comment">// Exécuter une demande</span></span><span>
</span><span><span class="hljs-keyword">do</span></span><span> {
</span><span><span class="hljs-variable">$status</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_exec</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>, </span><span><span class="hljs-variable">$active</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$active</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">curl_multi_select</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>);
}
} </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$active</span></span><span> && </span><span><span class="hljs-variable">$status</span></span><span> == CURLM_OK);
</span><span><span class="hljs-comment">// Retirez le premier cURL Poignée</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-comment">// Fermer tous cURL Poignée</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_close</span></span><span>(</span><span><span class="hljs-variable">$multi_handle</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Initialiser la poignée multibourl: nous utilisons d'abord Curl_Multi_Init () pour initialiser une poignée multiple, qui sera responsable de la gestion de plusieurs demandes.
Initialiser une poignée de boucle séparée: Ensuite, nous initialisons deux poignées de boucle CH1 et CH2 , correspondant respectivement à deux demandes.
Définissez les options de demande: définissez l'URL demandée et renvoyez les options de données pour chaque poignée de boucle individuelle.
Ajoutez des poignées à des poignées multiburiantes: utilisez Curl_Multi_Add_Handle () pour ajouter CH1 et CH2 à plusieurs poignées Curl afin qu'elles puissent être exécutées simultanément.
Exécuter la demande: utilisez curl_multi_exec () pour traiter et exécuter toutes les demandes ajoutées aux multiples poignées, et utiliser curl_multi_select () pour attendre que la demande se termine.
Supprimer la poignée de curl: une fois la demande terminée ou nous n'avons plus besoin d'une demande, vous pouvez utiliser Curl_Multi_Remove_Handle () pour supprimer la poignée Curl de la demande de la poignée multiple.
Fermer la poignée: Enfin, fermez les multiples poignées et toutes les poignées de boucle séparées pour libérer la ressource.
Temps de retrait: la poignée de boucle correspondante ne doit être supprimée que si la demande a été terminée ou si nous confirmons que la demande n'est plus nécessaire. Une fois l'opération supprimée, cette poignée ne participera plus à l'exécution des demandes.
Libération de ressource: Même après le retrait de la poignée Curl, Curl_close () est nécessaire pour appeler explicitement Curl_close () pour libérer la ressource Curl, sinon des fuites de mémoire peuvent se produire.
Limitation de concurrence: dans les scénarios de concurrence élevés, l'utilisation de Curl_Multi_Remove_Handle peut aider à gérer efficacement plusieurs demandes simultanées, nettoyer les poignées inutiles en temps opportun et éviter une occupation de ressources inutile.