curlopt_returntransfer curlopt_referer curl_setopt curl_exec asincrono php curl curl-multi

curlopt_referer - entendiendo php curl_multi_exec



php curl curlopt_returntransfer (1)

Puede explorar dos artículos que describen este ejemplo.

PHP y curl_multi_exec

Primero, aquí está el alto nivel. Hay dos bucles externos. El primero es responsable de limpiar el búfer curvo en este momento. El segundo es responsable de esperar más información y luego obtener esa información. Este es un ejemplo de lo que se llama bloqueo de E / S. Bloqueamos la ejecución del resto del programa hasta que se complete la E / S de red. Si bien esta no es la forma más preferible, en general, para manejar la E / S de red, en realidad es nuestra única opción en PHP síncrono de un solo hilo.

Hacer curl_multi_exec de la manera correcta

Primero, la variable $ mrc y del manual, aprendemos que la respuesta es un código CURL definido en las Constantes predefinidas cURL. En esencia, es una respuesta regular y, como con cualquier otra función de PHP, curl_multi_exec no es diferente y solo devuelve una respuesta una vez que ha finalizado. Lo que significa que debe haber solo UNA respuesta. En un mundo perfecto, esta única respuesta es 0 (cero) o igual a la constante predefinida CURLM_OK.

Estoy tratando de entender curl_multi_exec. Copié una parte del ejemplo del manual aquí. Entonces me pregunto, ¿cómo funciona? El primer bucle envía la solicitud http supongo? Pero luego es seguido por un bucle dentro de un bucle usando funciones con banderas aparentemente indocumentadas.

Me gustaría descargar + = 70 urls + = en paralelo.

http://www.php.net/manual/en/function.curl-multi-exec.php

<?php ... $active = null; //execute the handles do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } ... ?>