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

Форум PHP

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

 

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

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

тема: Инсталяция базы данных
 
 автор: zip   (26.09.2005 в 09:51)   письмо автору
 
 

Есть файловый архив более 50000 html файлов. Нужно организовать поиск. Все бесплатный скрипты не справляются. Нашел программу "Search Engine Builder Professional". Программа создает поисковый движок на
1) java script,
2)php
3)php с mysql
Создаем движок на пхп с мускул. Для этого проводится индексация.
Создается некая база данных с расширением php и файлы движка. Потом эти файлы закачиваются в корневую директорию сайта. После чего нужно провести инсталяцию базы данных. Запускается через браузер файл http://localhost/search/installdb.php
При инсталяции относительно небольшой базы(примерно 1мег) все проходит на ура. А вот с большим объемом ничего не получается. Апач падает, и все.
Тестирование проводится дома. Есть свой сервер в локальной сети.
Операционная система Windows XP
Апач 1.3.29 пхп 4.3.6

   
 
 автор: cheops   (26.09.2005 в 11:54)   письмо автору
 
   для: zip   (26.09.2005 в 09:51)
 

Сколько по времени создаётся база данных? Может просто исчерпывается лимит выполнения скрипта?

   
 
 автор: zIP   (26.09.2005 в 12:05)   письмо автору
 
   для: cheops   (26.09.2005 в 11:54)
 

Времени в принципе уходит много. До падения проходит более минуты.
Как я понимаю причиной падения является банальный тайм-аут. Где можно изменить его значение? Пробовал в конфиге апача
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
Переправил на 300000
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15
Переправил на 150000
Результат ноль
Где еще можно посмотреть?

   
 
 автор: cheops   (26.09.2005 в 22:12)   письмо автору
 
   для: zIP   (26.09.2005 в 12:05)
 

А нет... это к времени выполнения скрипта отношения не имеет - лучше обратно поставте значения. Для увеличения времени выполнения скрипта поставьте в начало скрипта следующую функцию
<?php
  set_time_limit
(0);
?>

Это снимит ограничение по времени выполнения скрипта.

   
 
 автор: zip   (27.09.2005 в 07:07)   письмо автору
 
   для: cheops   (26.09.2005 в 22:12)
 

Был совет исправить в php.ini

max_execution_time = 3000000 ; Maximum execution time of each script, in seconds
max_input_time = 6000000 ; Maximum amount of time each script may spend parsing request data
memory_limit = 50M ; Maximum amount of memory a script may consume (8MB)

Это правильно?

Это скрипт инсталяции базы.


<?php 
include("webdata.php");
include(
"config.php");


$mysql=mysql_connect($host,$user,$password) or die("Can\'t connect to MySQL! <br>Error ".mysql_errno().": ".mysql_error());

$result=mysql_query("CREATE DATABASE IF NOT EXISTS $databasename",$mysql) or die("Can\'t create database \"".$databasename."\"! <br>Error ".mysql_errno().": ".mysql_error());
$result=mysql_select_db($databasename,$mysql) or die("Can\'t open database \"".$databasename."\"! <br>Error ".mysql_errno().": ".mysql_error());


printf("Create tables...<br>");
printf("... ...<br>");

$result=mysql_query("DROP TABLE IF EXISTS $tablewordname",$mysql) or die("Can\'t drop old table \"".$tablewordname."\"! <br>Error ".mysql_errno().": ".mysql_error());
$result=mysql_query("CREATE TABLE $tablewordname (Word varchar(50) NOT NULL, FileID int(10) DEFAULT '0' NOT NULL, Count INTEGER UNSIGNED,
    INDEX (Word,FileID))"
,$mysql) or die("Can\'t create table \"".$tablewordname."\"! <br>Error ".mysql_errno().": ".mysql_error());

$result=mysql_query("DROP TABLE IF EXISTS $tabledataname",$mysql) or die("Can\'t drop old table \"".$tabledataname."\"! <br>Error ".mysql_errno().": ".mysql_error());
$result=mysql_query("CREATE TABLE $tabledataname (FileID int(10) DEFAULT '0' NOT NULL AUTO_INCREMENT,
    FileName varchar(255), LastModified varchar(50), Title varchar(255), Keywords varchar(255), Description varchar(255), Text longtext, Size int(10),
    PRIMARY KEY (FileID), UNIQUE INDEX (FileID))"
,$mysql) or die("Can\'t create table \"".$tabledataname."\"! <br>Error ".mysql_errno().": ".mysql_error());


printf("Add records to WordList...<br>");
printf("... ...<br>");

ini_set('max_execution_time',0);

$iArrCount=count($arrHitInfo);
for(
$w=0;$w<$iArrCount;$w++)
{
    
$iPos=strpos($arrHitInfo[$w],',');
    if(
$iPos==-1)continue;

    
$strWord=substr($arrHitInfo[$w],0,$iPos);
    
$strHitInfo=substr($arrHitInfo[$w],$iPos+1);

    
$arrTmpPages=explode(",",$strHitInfo);
    if(
count($arrTmpPages)%2!=0)continue;
    
    
$iHalfCount=count($arrTmpPages)/2;
    for(
$k=0;$k<$iHalfCount;$k++)
    {
        
$sql="INSERT INTO $tablewordname VALUES (\"".$strWord."\",".$arrTmpPages[$k*2].",".$arrTmpPages[$k*2+1].")";

        
$result=mysql_query($sql,$mysql);
        if(!
$result)
    {
        
printf("$w. %s<br>",$strWord); 
        
printf("Error %d: %s<br>",mysql_errno(),mysql_error());
    }
    }
}

printf("Add records to IndexData...<br>");
printf("... ...<br>");

$iArrCount=count($arrFiles);
for(
$i=0;$i<$iArrCount;$i++)
{
    
$sql="INSERT INTO $tabledataname VALUES (".$arrFiles[$i][0].",\"".$arrFiles[$i][1]."\",\"".$arrFiles[$i][2]."\",\"".$arrFiles[$i][3]."\",\"".$arrFiles[$i][4]."\",\"".$arrFiles[$i][5]."\",\"".$arrFiles[$i][6]."\",".$arrFiles[$i][7].")";
    
    
$result=mysql_query($sql,$mysql);
    if(!
$result)
    {
    
printf("$i. %s<br>",$arrFiles[$i][1]);
    
printf("Error %d: %s<br>",mysql_errno(),mysql_error());
    }
}


mysql_close();


printf("<br>Installation Finshed!<br><br><br>");
printf("Now you can click <a href=\"search.php\">here</a> to run the search engine <br>or click <a href=\"framesearch.html\">here</a> if you used frame for your search engine.");

?>

   
 
 автор: zIP   (27.09.2005 в 07:34)   письмо автору
 
   для: zip   (27.09.2005 в 07:07)
 

Работае примерно минут пять-семь и выдает ошибку "не могу отразить страницу".
Еще варианты есть?
Тут уже появился спортивный интерес. Хочется решить проблему из принципа.

   
 
 автор: zIP   (27.09.2005 в 10:11)   письмо автору
 
   для: zIP   (27.09.2005 в 07:34)
 

Кстати посоветовали включить код скрипта следующее Код:
<
<?php
set_time_limit(0);
?>


Включил вот так:
Код:
<HTML><HEAD>

<TITLE></TITLE>
</HEAD>

<BODY>
<?php
set_time_limit(0);
?>

<?php
include("webdata.php");
include("config.php");


"Работать" стал дольше но результат тотже
Может ограничение по времени в самом скрипте?

   
 
 автор: 10100100   (27.09.2005 в 12:02)   письмо автору
 
   для: zIP   (27.09.2005 в 10:11)
 

скорее всего в самом инклуде в каком нить есть ограничитель, так что советую воспользоваться поиском по слову... .воть...
да и зачем два раза писать <?php ??? толку то нет, так только код длиннее...

   
 
 автор: zIP   (30.09.2005 в 18:31)   письмо автору
 
   для: 10100100   (27.09.2005 в 12:02)
 

Да нет. Это оказался баг апача. Стоял 1.3.29 поставил 2.0.49 и все прошло на ура.
Правда в чем он заключался я так и непонял.

   
Rambler's Top100
вверх

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