2012-11-12 5 views
0

다양한 소스의 내용을 가져 와서 해당 텍스트에 특정 키워드가 있는지 테스트 할 수있는 웹 앱이 있습니다.PHP 웹 앱이 웹 사이트를 조작하지 못합니다.

문제는 해당 프로그램이 실행될 때 전체 웹 사이트가 응답하지 않는다는 것입니다.

나는 sleep (1)을 추가하려고 시도했다. 도처에서 휴식 시간을 얻지 만, 실행이 더 길어지고 오랫동안 내 웹 사이트가 응답하지 않게됩니다.

하나의 프로그램이 전체 웹 사이트를 정지 시키거나 전체 웹 사이트에 영향을 미치지 않도록하는 다른 해결책이 있습니까? 여기

는 (... 웹 사이트가 그대로 나에게 물려 받았습니다 순간 것이 mysqli하기 위해 웹 사이트를 개편하기 위해 너무 많은 일입니다 대신 mysqli의 MySQL의 사용을 신경 쓰지 마십시오) 코드 예제

function updatethestuff() 
     { 
     $count = 0; 
     error_reporting(E_ALL); 
     ini_set('display_errors', '1'); 
     $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt','Begin met het verwerken van alle rssfeeds'."\n",'w'); 
     $feeds = $this->db->query("SELECT * FROM rsscanner.feeds where `url` not like 'disabled' order by `id` asc"); 
     foreach($feeds->result() as $feed) 
      { 

      if(!isset($this->rssparser)) 
       { 
       $this->load->library('RSSParser', array('url' => $feed->url, 'life' => 2)); 
       } 
      else 
       { 
       $this->rssparser->reinit(array('url' => $feed->url, 'life' => 2)); 
       } 
      $this->write_file(FCPATH.'/pagemodules/rssfeedlog.txt','Begin met parsen van resultaten van ' . $feed->naam . "\n"); 
      $data = $this->rssparser->getFeed(20); 
      foreach ($data as $item) 
       { 
       $innerHTML=''; 
       $link = mysql_real_escape_string($item['link']); 
       $query = $this->db->query("SELECT feed_id from rsscanner.rsscontent where url='$link' limit 0,1"); 
       $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': Aantal keren dat ' . $link . ' al voorkomt is ' . $query->num_rows() . "\n"); 
       sleep(1); 
       if($query->num_rows() == 0) 
        {     
        $dom = new DOMDocument(); 
        $dom->validateOnParse = false; 
        $html = get_data($item['link']); 
        $dom->loadHTML($html); 
        $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': HTML data geladen' . "\n"); 
        sleep(1); 
        if(isset($feed->contentdiv)) 
         { 
         $x = $dom->getElementById($feed->contentdiv); 
         $tmp_dom = new DOMDocument(); 
         $tmp_dom->appendChild($tmp_dom->importNode($x, true)); 
         $innerHTML.=trim($tmp_dom->saveHTML()); 
         $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': Informatie uit de contentdiv("' . $feed->contentdiv . '") geladen'. "\n"); 
         sleep(1); 
         } 
        else 
         { 
         $finder = new DomXPath($dom); 
         $nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' {$feed->containerclass} ')]"); 
         $tmp_dom = new DOMDocument(); 
         foreach ($nodes as $node) 
          { 
          $tmp_dom->appendChild($tmp_dom->importNode($node,true)); 
          } 
         $innerHTML.=trim($tmp_dom->saveHTML()); 
         $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': Informatie uit de content class("' . $feed->containerclass . '") geladen' . "\n"); 
         sleep(1); 
         } 
        unset($dom); 
        unset($tmp_dom); 
        $innerHTML = mysql_real_escape_string(stripslashes($innerHTML)); 
        $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': html veilig gemaakt voor database'. "\n"); 
        sleep(1); 
        $q=$this->db->query("SELECT * FROM `rsscanner`.`zoekwoorden` union select * from `rsscanner`.`zoekwoord_synoniem`"); 

        $found = false; 
        $keywordsstring = ""; 
        $lowerhtml = strtolower($innerHTML); 
        $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': Begin met zoekwoord vergelijking'. "\n"); 
        sleep(1); 
        foreach($q->result() as $r) 
         { 
         if(strpos($lowerhtml,strtolower($r->zoekwoord)) !== false) 
          { 
          $found = true; 
          $keywordsstring = "$keywordsstring ".$r->zoekwoord; 
          $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': - Match met zoekwoord: ' . $r->zoekwoord . "\n"); 
          sleep(1); 
          } 

         } 
        if($found) 
         { 

         $keywordsstring = mysql_real_escape_string($keywordsstring); 
         $title = mysql_real_escape_string($item['title']); 
         $desc = mysql_real_escape_string(strip_tags($item['description'])); 
         $date = mysql_real_escape_string(date('Y-m-d',strtotime($item['pubDate']))); 
         $this->db->query("INSERT INTO rsscanner.rsscontent (feed_id,title,description,published,url,content,keywords_found) 
                    VALUES ('{$feed->id}','$title','$desc','$date','$link','$innerHTML','$keywordsstring')"); 
         $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': Opslaan in database als geldig zoekresultaat' . "\n"); 

         } 
        else 
         { 

         $keywordsstring = mysql_real_escape_string($keywordsstring); 
         $title = mysql_real_escape_string($item['title']); 
         $desc = mysql_real_escape_string(strip_tags($item['description'])); 
         $date = mysql_real_escape_string(date('Y-m-d',strtotime($item['pubDate']))); 
         $this->db->query("INSERT INTO rsscanner.rsscontent (feed_id,title,description,published,url,content,keywords_found) 
                    VALUES ('{$feed->id}','$title','$desc','1983-05-10 09:10:53','$link','$innerHTML','NO MATCH')"); 
         $this->write_file(FCPATH . '/pagemodules/rssfeedlog.txt',$feed->naam . ': markeren in database als een no match' . "\n"); 
         } 
        sleep(1); 
        } 
       } 
      } 
     echo "done"; 
     } 
+1

AJAX에서보세요 사용합니다. – Sirko

+0

컴퓨터에서 웹 서버가 실행되고 있습니까? –

+0

@sirko 전화를 걸기 위해 아약스를 사용하고 있습니다. 그것은 아약스에 의해 호출되는 응용 프로그램으로, 이로 인해 문제가 많이 발생합니다. 웹 서버는 전문 웹 서버입니다. 나는 전체 웹 사이트가 하나의 ap 때문에 응답이 없게되는 것이 우스꽝 스럽다. – Tschallacka

답변

관련 문제