Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Curl Multi
Форумы портала PHP.SU » » Работа с сетью » Curl Multi

Страниц (1): [1]
 

1. incker - 17 Июня, 2012 - 19:25:11 - перейти к сообщению
Здравствуйте,

пользуюсь Curl Multi, но почему-то он скачивает не быстрее чем обычный курл, а даже наоборот меделннее((

ктонибудь знает почему так??



добавляю ссылку одну и ту же, куки, только POST разный, может если ссылка одна и та же то скачивает по очереди?

еще слышал что апач может ограничивать количество паралельных соединений, если да, то как это узнать?
Заранее большое спасибо!!)




Вычитал в интернете вот что:

Как я уже говорил Выше, согласно спецификации HTTP/1.1 на браузеры накладываются ограничения на количество одновременно загружаемых компонентов сайта, а именно не более 2-х компонентов с одного хоста. Поэтому если на Вашем сайте много графики, то ее лучше вынести на отдельный поддомен или поддомены. Для Вас это будет один и тот же сервер, а для браузера – разные. Чем больше поддоменов Вы создадите, тем больше файлов браузер сможет одновременно загрузить и тем быстрее загрузится вся страница сайта. Вам остается лишь изменить адрес картинок на новый. Очень простой, но действенный способ.


Относиться ли это к моей ситуации??
2. Мелкий - 17 Июня, 2012 - 19:35:55 - перейти к сообщению
Покажите, как пробуете. Может, в один поток и делаете.
3. incker - 17 Июня, 2012 - 19:46:01 - перейти к сообщению
Взял код с какого-то официального сайта

PHP:
скопировать код в буфер обмена
  1. $ch1 = curl_init();
  2. $ch2 = curl_init();
  3.  
  4. // устанавливаем URL и другие соответствующие опции
  5. curl_setopt($ch1, CURLOPT_URL, "http://vk.com/");
  6. curl_setopt($ch1, CURLOPT_HEADER, 0);
  7. curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($ch2, CURLOPT_URL, "http://www.php.su/");
  9. curl_setopt($ch2, CURLOPT_HEADER, 0);
  10. curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
  11.  
  12. //создаем набор дескрипторов cURL
  13.  
  14. //добавляем два дескриптора
  15.  
  16. $active = null;
  17. //запускаем дескрипторы
  18. do {
  19.     $mrc = curl_multi_exec($mh, $active);
  20. } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  21.  
  22. while ($active && $mrc == CURLM_OK) {
  23.     if (curl_multi_select($mh) != -1) {
  24.         do {
  25.             $mrc = curl_multi_exec($mh, $active);
  26.         } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  27.     }
  28. }
  29.  
  30.  
  31. $one = curl_exec($ch1);
  32. $two = curl_exec($ch2);
  33.  
  34. //закрываем дескрипторы






может быть я действительно делаю в один поток!!))
Но всеравно проблема есть...

это я же дописал 2 функции которые есть для обычного курла))

по тому что не знал как результат вытащить.

я не знаю как вытащить переменные из


по тому что print ($mrc); выводит 0
4. Мелкий - 17 Июня, 2012 - 20:28:32 - перейти к сообщению
Так и подумал.
Вы 4 запроса делаете. Сперва 2 параллельно через мультикурл, потом ещё 2 последовательно через curl_exec.

CODE (htmlphp):
скопировать код в буфер обмена
  1. http://ru2.php.net/manual/en/function.curl-multi-init.php#105252

Милая функция, отражающая всю суть.
5. incker - 17 Июня, 2012 - 20:46:36 - перейти к сообщению
Мелкий пишет:
Так и подумал.
Вы 4 запроса делаете. Сперва 2 параллельно через мультикурл, потом ещё 2 последовательно через curl_exec.


спасибо большое))) да, сам уже разобрался)))

в итоге решение
заменил curl_exec НА curl_multi_getcontent и все грузиться куда быстрее)))

сижу радуююююсь!)))))

 

Powered by ExBB FM 1.0 RC1