Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Начать с места разрыва сканинга. 
V
    Опции темы
Vbif
Дата 22.9.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 25.2.2006
Где: Реутов

Репутация: нет
Всего: нет




Вот есть такой кодик с помощью которого сканится папка в которой распологаются подпапки с книгами...
задача следущая нужно чтобы при превышение лимита времени в 28 сек происходил разрыв (это реализовано)
и при последущем запуске скрипта начинался сканинг с места разрыва... (как это реализовать) если попутно кто заметит какие баги буду только рад...
заранее спасибо за помощь!
Код

<?php
       /*---Сканируемая папка---*/
       $d="Books";
       chdir("Books");
       $query_idn="";
       /*---Рекурсивная функция сканинга папок---*/
       function dirsize( $d )
       {
       global $t,$t2,$t1;    
       /*---Открываем папку для сканинга---*/
       $dh = opendir($d);
       while( ( $f = readdir( $dh ) )!== false )
       {
       /*---Распределение ресурсов на папки и файлы---*/      
       if ( $f != "." && $f != ".." )
       {
       $path = $d. "/" . $f;
       if( is_dir( $path ) )
       {
       print substr( $path , 2 ) . "<br>";
       dirsize( $path );
       }
       if( is_file( $path ) )
       {
       /*---Позиция последнего вхождения точки---*/
       $toch=strrpos($path,".");
       $r_tip=substr($path, $toch+1);
       
       /*---Массив допустимых расширений---*/
       $tip = array('txt', 'doc', 'djvu', 'zip',
                    'rar', 'pdf', 'chm', 'html',
                    'htm', 'mht');
       
       /*---Проверяем допустимый формат---*/
       if(in_array(strtolower($r_tip),$tip) && $tip!==false)
       {
        //проверка на наличие схожих книг в бд
         $pathd=substr( $path , 3 );
         $query_idn="SELECT * FROM tp__bibl WHERE path='$pathd'";
         $result_idn=mysql_query($query_idn);
//---------------------------------------
        if(@mysql_num_rows($result_idn)>0)
        {
      echo 'Книга с таким названием уже есть в базе данных. <br>';
        continue;
        }
        else
        {
     //ввод информации в бд
     $date=date('Y-m-d');
     $query= "INSERT INTO `tp__bibl` ( `id` , `path` , `date`, `author`, `razdel` ) 
     VALUES ('NULL', '$pathd', '$date', 'неизвестен','trash')";
     $result=mysql_query("$query");
     if(!$result)
        {
            echo "<p><b>Error:".mysql_error()."</b></p>";
            echo 'Ошибка выполнения запроса к бд.';
        }
          }
//-----------------------------------------
       }
       else
       {
       echo 'Данный формат не допустим. <br>';
       continue;
       }
      }//проверка на файл директорию.
    }//проверка на родительский и текущий каталог
   }
     /*---подсчёт времени работы скрипта---*/
     $mtime = microtime();
     $mtime = explode(' ',$mtime);
     $t2 = $mtime[1] + $mtime[0];
     $t=round($t2-$t1, 3);
     echo '<font color="red">'. $t .'</font><br>';
if($t>28)
{ 
echo 'Лимит времени в 28 секунд был превышен.';
exit;
}
     /*---конец функции---*/
     closedir($dh);
     }
     /*---Начало замера времени---*/
     $mtime = microtime();
     $mtime = explode(' ',$mtime);
     $t1 = $mtime[1] + $mtime[0];
     dirsize("./");  
?>


PM MAIL WWW ICQ   Вверх
nerezus
Дата 23.9.2006, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Vbif, сохранить в файл состояние. Потом просто загружаешь состояние.

А лучше просто время выполнения увеличить )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Vbif
Дата 23.9.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 25.2.2006
Где: Реутов

Репутация: нет
Всего: нет



к сожалению хостер отключил функцию ini_set а насчёт сохранения состояния есть проблемы... я могу сохранить ту папку на которой остановился сканинг.. но как скрипт узнает что уже просканено а что нет... если бы у папки был внутренний указатель как в файле тогда бы проблем вообще не было.. может кто ещё что подскажет..
PM MAIL WWW ICQ   Вверх
Garret
Дата 23.9.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 16.9.2006
Где: Киев

Репутация: нет
Всего: 2



Тогда сохраняй последнюю папку и последний просканеный файл в ней.
PM MAIL WWW ICQ   Вверх
Vbif
Дата 23.9.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 25.2.2006
Где: Реутов

Репутация: нет
Всего: нет



короче всё придумал как сделать изменил логику не много и всё получилось... но за ответы ваши всё равно спасибо. smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.