Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzanie na stronie słów kluczowych
than
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 4
Dołączył: 22.01.2008

Ostrzeżenie: (0%)
-----


Witam

Od pewnego czasu zastanawiam się jak zrobić skrypt, który wstawiony jako iframe (lub za pomocą js) na inną stronę, pobierałby z niej tekst i sprawdzał, na podstawie swojej bazy danych, czy występują na niej słowa kluczowe.

Problemem jest to że w bazie słowa kluczowe zapisywane są po kilka w każdym rekordzie oddzielone spacjami (rozdzielenie ich do tablicy z ID rekordu wymaga więcej czasu i pamięci).

Próbowałem robić to łącząc się za pomocą CURL ze stroną ($_SERVER['HTTP_REFERER']), następnie usuwając znaczniki html i wszystkie znaki interpunkcyjne i specjalne. Dalej dzielę wynik do tablicy przez spacje i teraz problem: dla każdego wpisu w tablicy muszę wykonać zapytanie do bazy, żeby sprawdzić czy nie jest on słowem kluczowym. Zajmuje to zdecydowanie za dużo czasu i obciąża serwer, szczególnie że nie jest to jedyne zadanie skryptu (dalej analizuje słowa kluczowa, zapisuje w bazie ich występowanie, itp.).

Może ma ktoś jakieś propozycje jak przyśpieszyć działanie skryptu i odciążyć serwer?

Daje kod jakim tworzę tą tablicę ze słowami, dalej w pętli porownuje z wpisami w bazie.
  1. <?php
  2. $url = $_SERVER['HTTP_REFERER'];
  3. $curl = curl_init();
  4.  
  5. $header[0] = 'Accept: text/xml,application/xml,application/xhtml+xml,';
  6. $header[0] .= 'text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
  7. $header[] = 'Cache-Control: max-age=0';
  8. $header[] = 'Connection: keep-alive';
  9. $header[] = 'Keep-Alive: 300';
  10. $header[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
  11. $header[] = 'Accept-Language: en-us,en;q=0.5';
  12. $header[] = 'Pragma: ';
  13.  
  14. curl_setopt($curl, CURLOPT_URL, $url);
  15. curl_setopt($curl, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
  16. curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
  17. curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com');
  18. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  19.  
  20. $html = curl_exec($curl);
  21. curl_close($curl);
  22. $search = array('/<?((?!?>).)*?>/s');
  23.  
  24. $html = strip_tags(preg_replace($search, '', $html));
  25. $tab = array('&#x0105;' => 'a', '&#x0107;' => 'c', '&#x0119;' => 'e', '&#x0142;' => 'l', '&#x0144;' => 'n', '&#x00F3;' => 'o', '&#x015B;' => 's', '&#x017A;' => 'z', '&#x017C;' => 'z', 'ą' => 'a', 'ę' => 'e', 'ó' => 'o', 'ś' => 's', 'ł' => 'l', 'ż' => 'z', 'ź' => 'z', 'ć' => 'c', 'ń' => 'n');
  26. $html = strtr($html, $tab);
  27. $f = array('&nbsp;', '|', ',', '.', '?', '!', '@', '#', ' , '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '\', '/', ']', '[', '{', '}', ';', ':', '`', '~');
  28. $html = str_replace($f, ' ', $html);
  29. $html = ereg_replace('[[:space:]]+', ' ', $html);
  30.  
  31. $keys = explode(' ', $html);
  32. $html = '';
  33. ?>


A może znacie inny sposób na sprawdzenie czy na stronie występują słowa z bazy?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 21:21