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";
}
AJAX에서보세요 사용합니다. – Sirko
컴퓨터에서 웹 서버가 실행되고 있습니까? –
@sirko 전화를 걸기 위해 아약스를 사용하고 있습니다. 그것은 아약스에 의해 호출되는 응용 프로그램으로, 이로 인해 문제가 많이 발생합니다. 웹 서버는 전문 웹 서버입니다. 나는 전체 웹 사이트가 하나의 ap 때문에 응답이 없게되는 것이 우스꽝 스럽다. – Tschallacka