curlopt_returntransfer curlopt_referer curl_setopt curl_exec asincrono php asynchronous curl parallel-processing curl-multi

curlopt_referer - Solicitudes HTTP asincrónicas/paralelas utilizando PHP curl_multi



php curl curlopt_returntransfer (4)

Recientemente analicé la posibilidad de realizar múltiples solicitudes con curl. Puede que no lo esté entendiendo completamente, así que solo espero aclarar algunos conceptos.

Definitivamente es una buena opción si está buscando contenido de múltiples fuentes. De esta forma, puede comenzar a procesar los resultados desde servidores más rápidos mientras aún espera los más lentos. ¿Sigue teniendo sentido usarlo si está solicitando varias páginas del mismo servidor? ¿Sería el servidor aún servir varias páginas en el momento para el mismo cliente?


Algunos servidores pueden configurarse para comportarse de forma defensiva si se realizan demasiadas conexiones o solicitudes a partir de lo que cree que es el mismo cliente. Podría hacer cosas como conexiones de caída / rechazo, limitar el ancho de banda a un total agregado entre todas sus conexiones u otras cosas.

De todos modos, sea considerado como si quisiera que un rastreador web se considere en su sitio, y trate de no bombardear a un único servidor con demasiado a la vez.

Si necesita buscar 5 páginas cada una, desde 5 servidores diferentes, es mucho más probable que termine más rápido si usa 1 conexión a cada servidor hasta que finalice, que si hizo 5 conexiones a 1 servidor hasta que finalice.


No puede hacer múltiples subprocesos en PHP, por lo que no podrá comenzar a procesar una página mientras los demás aún se están recuperando. Multi-curl no devolverá el control hasta que se recuperen todas las páginas o se agote el tiempo de espera. Por lo tanto, tardará tanto tiempo en recuperar la página más lenta. Va de serial (curl) a paralelo (multi_curl), que aún le dará un gran impulso.

Los servidores servirán varias páginas al mismo cliente hasta cierto límite de configuración. Solicitar 5-10 páginas de un servidor estaría bien.


cree que la mayoría o todos los servidores servirán más de una página a la vez para el mismo cliente. Puede establecer un tiempo de espera razonable para sus conexiones; luego, si no se puede conectar, empújelo a su matriz de conexiones para que se vuelva a intentar después de que se hayan procesado todas las demás. De esta forma, obtendrá al menos uno a la vez, aunque siempre tratará de obtener varios. ¿Tiene sentido? :)


Mira esto , este tipo hizo un script que funciona de manera sincronizada con curl_multi. He estado jugando durante un par de horas con él, y funciona bien.