Forum Webscript.Ru

Программирование => PHP => Тема начата: Lutik от 28 Января 2005, 11:52:43

Название: Паук для поисковой системы
Отправлено: Lutik от 28 Января 2005, 11:52:43
Проблема следущего характера!
Написал рекурсивную функцию, которая просматривает все страницы и соберает ссылки, потом в цикле открываю ссылку удаляю весь хтмл и сую его в базу, но скрипт обрабатывает в среднем 22 ссылки а потом просто виснет!
Предложите альтернативный вариант паучка :rolleyes:
Или помогите довести до ума этот! :rolleyes:
Вот скрипт:

include(\'config_inc.php\');

function index($dir)
{

if(is_readable($dir2=$dir))
{
$OpenDir=opendir($dir);
while(($file=readdir($OpenDir))!==false)
{
if($file!="."&&$file!=".." && $file!="admin" && $file!="map" && $file!="forum" && $file!="desk")
{
if(is_dir($dir.chr(47).$file))
index($dir.chr(47).$file);
                                                else
{
                                                if (substr($file,-4) == ".php" || substr($file,-4) == ".html" || substr($file,-4) == ".htm" || substr($file,-4) == ".shtml" ){
                                                if ($file!="indexing.php" && $file!="main1.php" && $file!="connect.php" && $file!="sch.php" && $file!="vv.php"){
$OpenFile=fopen($dir.chr(47).$file,\'r\');
$content=fread($OpenFile,filesize($dir.chr(47).$file));
                                                $content=preg_replace("/ +/s"," ",$content);
                                                $dir2=str_replace(".","",$dir2);
                                                preg_match_all("/<[Aa][ \\r\\n\\t]{1}[^>]*[Hh][Rr][Ee][Ff][^=]*=[ \'\\"\\n\\r\\t]*([^ \\"\'>\\r\\n\\t#]+)[^>]*>/",$content,$uri);
                                                $content=null;
                                                foreach($uri[1] as $uri){
                                                $uri=preg_replace("/PHP_SELF/", "$file", $uri);
                                                $uri=str_replace("$", "", $uri);
                                                $uri=str_replace("mailto:iapp@ua.fm", "index.php", $uri);
                                                $uri=str_replace("mailto:2Spro@ua.fm", "index.php", $uri);
                                                $uri=str_replace("http://www.dmeti.dp.ua/index.html", "index.php", $uri);
                                                $uri=str_replace("../", "", $uri);
                                                $url="http://".$_SERVER["SERVER_NAME"].$dir2.chr(47).$uri;
                                                $res=mysql_query("Select link from search where link=\'$url\'") or die (mysql_error());
                                                $num=mysql_num_rows($res);
                                                echo $num."
";
                                                if($num==0){
                                                $cont=file_get_contents($url);
mysql_query("insert into search (word, link) values(\'".addslashes($cont)."\', \'$url\')") or die(mysql_error());
                                                }
                                                }

                                                    fclose($OpenFile);
}
                                              }
                                           }
}
}
}
}
                        $dir=".";
                        index($dir);
                        echo "Назад";

Название: Паук для поисковой системы
Отправлено: Меняздесьдавнонет от 28 Января 2005, 12:46:08
Цитировать
Lutik:
Предложите альтернативный вариант паучка

C
Название: Паук для поисковой системы
Отправлено: Макс от 28 Января 2005, 13:07:12
это выполняется в mod_php или php-cli  ?
Название: Паук для поисковой системы
Отправлено: Lutik от 28 Января 2005, 13:20:52
Цитировать
это выполняется в mod_php или php-cli ?

выполняется в mod_php
Название: Паук для поисковой системы
Отправлено: Макс от 28 Января 2005, 14:40:23
такие скрипты от сервера не запускают.
mod_php здесь использовать нельзя.
Название: Паук для поисковой системы
Отправлено: Lutik от 28 Января 2005, 16:03:02
А если у хостинга нет возможности пускать php-cli?(я просто не очень силен в настройках серверов!)
Как быть тогда?
Название: Паук для поисковой системы
Отправлено: attilla от 31 Января 2005, 06:00:38
Цитировать
Lutik:
А если у хостинга нет возможности пускать php-cli?(я просто не очень силен в настройках серверов!) Как быть тогда?

Менять хостинг
Название: Паук для поисковой системы
Отправлено: Макс от 31 Января 2005, 12:54:01
Lutik
тебе нужен хостинг, который позволяет запускть процессы в фон.
типа :
exec(\'/usr/bin/perl /path/to/your/spider.pl ......\');
Если хостер разрешает например так использовать perl / python /ruby - то можешь паука написать на нем и запускать его чере [p]exec[/p] или похожие функции (или вообще через cron)

Или меняй хостинг.

Посмотри phpinfo(), есть ли в ключах компиляции --enable-cli
Название: Паук для поисковой системы
Отправлено: Lutik от 31 Января 2005, 13:21:17
Макс, да проверял! нет там такого :( , а в перле я дундук вообще! хотя може и раздуплюсь :)  А такой вопрос можно ли запустить сишьный скрипт, ню например как cgi скрипт или както еще?
Название: Паук для поисковой системы
Отправлено: Макс от 31 Января 2005, 13:54:04
Цитировать
Lutik:
сишьный скрипт

На С - это уже будет программа а не скрипт (ИМХО).
Можно или нельзя ее запустить - надо спросить у хостера.
И запускать ее все равно надо будет в фон (а не CGI)