Виснет curl. В чем проблема?

#1 7 мая 2014 в 22:41
Всем привет.

Пишу парсер, в одном из моментов скрипт просто виснет и не выполняется. Вот сам код парсера:

  1.  
  2. <?
  3.  
  4. function browser($url){
  5. include('useragent.php');
  6. $c = curl_init();
  7. curl_setopt($c, CURLOPT_URL, $url);
  8. curl_setopt($c, CURLOPT_USERAGENT, "User-Agent: " . $useragent[$user]);
  9. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  10. curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 5);
  11. curl_setopt($c, CURLOPT_TIMEOUT, 5);
  12. $res = curl_exec($c);
  13. return $res;
  14. }
  15.  
  16. function Write2File($filename, $content){
  17. $fp = fopen($filename, "a");
  18. fputs($fp, $content."\r\n");
  19. fclose($fp);
  20. }
  21.  
  22. function luxorfilm(){
  23. $index = browser('http://XXXXXXXX.com/videos');
  24. $html = substr($index, strpos($index, "<div class=\"box\">"));
  25. $html = substr($html, 0, strpos($html, '<div class="right span-200">'));
  26. $IndexFilms = explode('<div class="video_box">', $html);
  27. for($i=1;$i<count($IndexFilms);$i++){
  28. $FilmHtml = $IndexFilms[$i];
  29.  
  30.  
  31. // постер к фильму
  32. preg_match('#<img src=\"([^\"]*)\" title="([^\"]*)" alt="([^\"]*)" width=\"160\" height=\"120\" id=\"([^\"]*)\" />#', $FilmHtml, $ok);
  33. $FilmImg = $ok[1]; //картинка к видео со страницы категории
  34. $FilmTitle = $ok[2]; //название видео
  35. unset($ok);
  36.  
  37. //Ссылка на страницу видео
  38. $FilmLink = substr($FilmHtml, strpos($FilmHtml, "<a href=\"\/video\/\""));
  39. $FilmLink = substr($FilmLink, 0, strpos($FilmLink, "</a>"));
  40. preg_match('#<a href=\"([^\"]*)\">#', $FilmHtml, $ok);
  41. $FilmLink = $ok[1];
  42. unset($ok);
  43.  
  44. //Ссылка на ролик
  45. //$FilmFLV = preg_replace("/[^0-9]/", '', $FilmLink);
  46. preg_match ('%\d+%', $FilmLink, $ok);
  47. $FilmFLV = 'http://XXXXXXXXXX.com/pv/'.$ok[0].'.flv';
  48. unset($ok);
  49.  
  50. // идем на страницу фильма и забираем описание
  51. $FilmPage = browser("http://XXXXXXXXX.com" . $FilmLink);
  52.  
  53. }
  54.  
  55.  
  56. // $sql = "DELETE FROM parser_film WHERE `kinoteatr` = 'luxor'";
  57. // $result = mysql_query($sql);
  58.  
  59. // очищаем файл
  60. //file_put_contents('luxor.dat', '');
  61.  
  62. // запускаем парсер
  63. luxorfilm();
  64.  
  65.  
  66.  
  67. ?>
  68.  
В таком виде скрипт зависает.
Стоит только закомментировать строку
  1.  
  2. // идем на страницу фильма и забираем описание
  3. $FilmPage = browser("http://XXXXXXXXX.com" . $FilmLink);
  4.  
Все начинает работать. Причем аналогичный парсер для другого сайта прекрасно работает.

В чем может быть причина?
#2 8 мая 2014 в 12:15
Увеличь время выполнения скрипта на сервере!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.