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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Profiling и тяжелый curl_multi_select

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Возникает высоконагруженность системы из-за curl_multi_select
shkarbatov
Отправлено: 17 Декабря, 2013 - 12:21:36
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Всем привет.

На сервере смотрю, что проц смотрит в потолок.
Посмотрел через xdebug profiler в kcachegrind, все сходится на php::curl_multi_select. У меня используется multicurl для многопоточных запросов.

В коде это выглядит так:

PHP:
скопировать код в буфер обмена
  1.  
  2.                 while ($active && ($mrc == CURLM_OK)) {
  3.                         if (curl_multi_select($cmh) != -1) {
  4.                                 ...


Есть ли какой-то аналог ей? Возможно я путаю что-то в kcachegrind?
Кто знает или может кто разбирается хорошо в kcachegrind - отзовитесь!
 
 Top
Мелкий Супермодератор
Отправлено: 17 Декабря, 2013 - 12:48:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Если верно помню, и комментарии мануала о том же: http://www.php.net/manual/en/fun...elect.php#113355
curl_multi_select не блокирует выполнение, возвращает -1 сразу. И получается цикл, бесконечно вызывающий curl_multi_select 100% времени вместо sleep'а. Добавьте usleep небольшой.


-----
PostgreSQL DBA
 
 Top
shkarbatov
Отправлено: 17 Декабря, 2013 - 12:54:12
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Да, это увидел - поправил.
Поставил usleep(100); Достаточно такого?

Еще вопрос, в kcachegrind на против вызываемого метода ставит цифру - 5 345 496, но если посчитать все цифры в методе, то получается только 1 290 006, куда делись остальные, может я как-то не так смотрю?
(Добавление)
Заметил в анализаторе kcashgrind вот такое вот

56
...
95

То есть, того, что между этим строками - нету. Может кто работал с анализатором, знает как это побороть?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB