Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: занесение структуры сайта - в базу
 
 автор: artem_b   (24.07.2008 в 10:16)   письмо автору
 
 

Есть обходчик, который будет обходить страницы сайта (код приведен ниже) и сохранять их содержимое в базе.
При этом подчиненность (родитель - подкаталог) задается
просто указанием id родителя в соответствующем поле таблицы.
Трудность заключается в том, чтоб сделать обход пошаговым, чтобы он за раз обрабатывал конечное
количество страниц, а следующий раз продолжал с того же места. Страниц
на сайте много.

Вот что имеем на сегодняшний день:
1. структура базы
CREATE TABLE `table` (
`exib_id` int(11) NOT NULL auto_increment,
`id_parent` int(11) default NULL,
`name` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`exib_text` text NOT NULL,
UNIQUE KEY `exib_id` (`exib_id`)
) TYPE=MyISAM;

2. Обходчик
<?php
  
require_once("./inc/db.php");
  
mysql_query("DELETE FROM `table`");
  
$current_id 1;
  
scan_dir(".","0","1");

  function 
scan_dir($dirname,$parant_id,$id)
  {
    global 
$current_id;
    
$save_parant_id $parant_id;
    
$dir opendir($dirname);

    while ((
$file readdir($dir)) !== false)
    {
      if(
$file != "." && $file != "..")
      {
           if(
is_dir($dirname."/".$file))
           {
              
$text =html_entity_decode(htmlspecialchars (file_get_contents($dirname."/".$file."/index.html"), ENT_QUOTES ));
                    if (empty(
$text))  $text html_entity_decode(htmlspecialchars(file_get_contents($dirname."/".$file."/index.htm")));
                    
$pattern "|<title>(.*?)<\/title>|i";
                    
preg_match($pattern$text$out);
                    
$content_pattern "|<body(.*?)>(.*?)<\/body>|si";
                    
preg_match($content_pattern$text$content);
                    
$cont $content[2];
                    
$url = (substr($dirname1))."/".$file."/";
                    
$query "INSERT INTO `table` VALUES ('NULL','$parant_id','$out[1]','$url', '$cont')";
                    
$map mysql_query($query);
                    
$parant_id $id;
                    
$id++;
                    
$current_id++;
                    
scan_dir($dirname."/".$file,$parant_id,$id);
                    
$parant_id $save_parant_id;
                    
$id $current_id;
           }
      }
    }
    
closedir($dir);
  }
?>



Подскажите, пожалуйста, как изменить код, чтобы за раз обрабатывать заданное количество страниц. Заранее большое спасибо всем откликнувшимся!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования