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 :: Мониторинг стороннего сайта с авторизацией

 PHP.SU

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


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

> Без описания
Tmin10
Отправлено: 25 Мая, 2011 - 20:18:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




Хочу написать мониторинг стороннего сайта, на котором нужна авторизация.
Чем лучше реализовать Curl'ом или на сокетах?
Можно ли полностью модифицировать заголовки, передаваемые на сайт?
 
 Top
EuGen Администратор
Отправлено: 25 Мая, 2011 - 20:19:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Tmin10 пишет:
Чем лучше реализовать Curl'ом или на сокетах?

Лучше curl. Если запросов много, то curl_multi
Tmin10 пишет:
Можно ли полностью модифицировать заголовки, передаваемые на сайт?

Можно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Tmin10
Отправлено: 25 Мая, 2011 - 20:34:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




А много это сколько?
 
 Top
EuGen Администратор
Отправлено: 25 Мая, 2011 - 20:35:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Достаточно для того, чтобы задуматься об оптимизации. Я ведь не знаю заранее, как часто Вы хотите мониторить, как долго отвечает сторонний сайт и т.п.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Tmin10
Отправлено: 25 Мая, 2011 - 20:37:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




Не более пары запросов в секунду, пинг до сайта небольшой (>100)
 
 Top
Tmin10
Отправлено: 06 Июня, 2011 - 23:02:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




А как сделать параллельные запросы, сейчас уже при 5 запросах время загрузки страницы скрипта 9 секунд, мне же нужно 10-15 запросов?
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Июня, 2011 - 23:19:07
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




делать запросы заранее, а на страницу выдавать готовые на текущий момент результаты.
 
 Top
Tmin10
Отправлено: 06 Июня, 2011 - 23:24:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




Мне все вместе надо, они друг с другом сравниваются и выдаётся заключение.
Где стоит оптимизировать скрипт?
 
 Top
Tmin10
Отправлено: 07 Июня, 2011 - 21:16:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




Решил попробовать curl_multi и вот думаю, как мне получить код страничек после
PHP:
скопировать код в буфер обмена
  1. do {
  2.     curl_multi_exec($mh,$running);
  3. } while ($running > 0);


Использую пример из документации:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // create both cURL resources
  3. $ch1 = curl_init();
  4. $ch2 = curl_init();
  5.  
  6. // set URL and other appropriate options
  7. curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
  8. curl_setopt($ch1, CURLOPT_HEADER, 0);
  9. curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
  10. curl_setopt($ch2, CURLOPT_HEADER, 0);
  11.  
  12. //create the multiple cURL handle
  13. $mh = curl_multi_init();
  14.  
  15. //add the two handles
  16.  
  17. $running=null;
  18. //execute the handles
  19. do {
  20.     curl_multi_exec($mh,$running);
  21. } while ($running > 0);
  22.  
  23. //close the handles
  24.  
  25. ?>

(Отредактировано автором: 07 Июня, 2011 - 22:20:24)

 
 Top
Tmin10
Отправлено: 08 Июня, 2011 - 18:03:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




Никто не работал с multi?
 
 Top
Мелкий Супермодератор
Отправлено: 08 Июня, 2011 - 20:08:35
Post Id



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


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


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




Функция curl_multi_getcontent

Смотрите комментарии к функциям, много чего полезного можно найти: http://php.net/manual/ru/functio...l-multi-exec.php


-----
PostgreSQL DBA
 
 Top
Tmin10
Отправлено: 19 Июня, 2011 - 11:22:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




Что то не получается:

PHP:
скопировать код в буфер обмена
  1.  
  2. for ($qfood=1; $qfood<6; $qfood++)
  3. {
  4. $ch[$qfood] = curl_init("http://сайтик.com/en/$qfood");
  5. curl_setopt($ch[$qfood], CURLOPT_RETURNTRANSFER, 1);
  6. //curl_setopt($ch, CURLOPT_HEADER, 0);
  7. curl_setopt($ch[$qfood], CURLOPT_COOKIE, "тут куки");
  8. curl_multi_add_handle($mh,$ch[$qfood]);
  9. }
  10. //дальше что то непонятное
  11. $active = null;
  12. do {
  13.     $mrc = curl_multi_exec($mh, $active);
  14. } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  15.  
  16. while ($active && $mrc == CURLM_OK) {
  17.     if (curl_multi_select($mh) != -1) {
  18.         do {
  19.             $mrc = curl_multi_exec($mh, $active);
  20.         } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  21.     }
  22. }
  23. //тут пытаюсь получить что-то
  24. $picsArr[1] = curl_multi_getcontent($mh);
  25. $picsArr[2] = curl_multi_getcontent($mh);
  26. $picsArr[3] = curl_multi_getcontent($mh);
  27. $picsArr[4] = curl_multi_getcontent($mh);
  28. $picsArr[5] = curl_multi_getcontent($mh);
  29.  
  30. //но ничего((
  31. print_r($picsArr);
  32.  

получаю ошибки для 25-29 строк:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning:  curl_multi_getcontent(): supplied resource is not a valid cURL handle resource in ...

Кстати, если всё-таки код страничек получается, то выгода в скорости есть в 3-4 раза.

(Отредактировано автором: 19 Июня, 2011 - 11:43:27)

 
 Top
Slavenin
Отправлено: 19 Июня, 2011 - 13:50:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


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




 
 Top
Tmin10
Отправлено: 19 Июня, 2011 - 13:59:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 239
Дата рег-ции: Дек. 2009  


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




Спасибо, попробую разобраться.

Отлично получилось, получаю 3.23277 секунды с мульти против 7.83426 секунд последовательно.

10 запросов даже за 4.03198 секунды!

(Отредактировано автором: 19 Июня, 2011 - 14:22:33)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB