As transferencias multi-cURL rematan na súa propia orde. Se asignou un proxy diferente a cada handle, o primeiro resultado completado non pertence necesariamente ao primeiro proxy da súa lista de entrada.

Anexe un identificador de transferencia estable mentres configura cada handle. Se está a probar puntos de conexión públicos seleccionables, a lista de proxies HTTP fornece candidatos HTTP. PHP expón o mecanismo de datos privados de libcurl:

$id = 'job-17';
curl_setopt($handle, CURLOPT_PROXY, 'http://203.0.113.10:8080');
curl_setopt($handle, CURLOPT_PRIVATE, $id);

Cando curl_multi_info_read() informa dunha transferencia completada, use o handle devolto para recuperar o identificador:

$id = curl_getinfo($message['handle'], CURLINFO_PRIVATE);

Manteña un rexistro de aplicación indexado por ese identificador que conteña o destino, o proxy configurado e o número de intento. Un reintento a través doutro proxy merece un novo rexistro de intento, aínda que pertenza ao mesmo traballo global.

Manteña tres tipos de enderezo separados

O punto de conexión do proxy configurado é o enderezo fornecido a cURL. O enderezo do par dunha conexión describe a conexión de rede que abriu cURL. Unha IP de saída observada polo destino é información reportada desde o outro lado. Poden diferir, especialmente con proxies encadeados ou xestionados polo provedor.

Os metadatos privados rexistran a súa configuración prevista; non poden demostrar que IP observou o destino. Á inversa, a resposta IP dun destino non lle di automaticamente que handle do seu programa a produciu.

Garde un identificador de proxy seguro nos rexistros rutineiros. Se o punto de conexión completo contén credenciais, rexistrar esa URL por cada transferencia fallida propaga o contrasinal por toda a súa colección de erros.

Este pequeno paso de contabilidade facilita ler os resultados mixtos: un traballo, un intento, un proxy seleccionado e un resultado real. Tamén evita depender de representacións incidentais do handle que cambiaron entre as API de cURL de PHP baseadas en recursos e en obxectos.

Artigos relacionados