|
|
|
| Есть файловый архив более 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 | |
|
|
|
|
|
|
|
для: zip
(26.09.2005 в 09:51)
| | Сколько по времени создаётся база данных? Может просто исчерпывается лимит выполнения скрипта? | |
|
|
|
|
|
|
|
для: 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
Результат ноль
Где еще можно посмотреть? | |
|
|
|
|
|
|
|
для: zIP
(26.09.2005 в 12:05)
| | А нет... это к времени выполнения скрипта отношения не имеет - лучше обратно поставте значения. Для увеличения времени выполнения скрипта поставьте в начало скрипта следующую функцию
<?php
set_time_limit(0);
?>
|
Это снимит ограничение по времени выполнения скрипта. | |
|
|
|
|
|
|
|
для: 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:07)
| | Работае примерно минут пять-семь и выдает ошибку "не могу отразить страницу".
Еще варианты есть?
Тут уже появился спортивный интерес. Хочется решить проблему из принципа. | |
|
|
|
|
|
|
|
для: 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");
"Работать" стал дольше но результат тотже
Может ограничение по времени в самом скрипте? | |
|
|
|
|
|
|
|
для: zIP
(27.09.2005 в 10:11)
| | скорее всего в самом инклуде в каком нить есть ограничитель, так что советую воспользоваться поиском по слову... .воть...
да и зачем два раза писать <?php ??? толку то нет, так только код длиннее... | |
|
|
|
|
|
|
|
для: 10100100
(27.09.2005 в 12:02)
| | Да нет. Это оказался баг апача. Стоял 1.3.29 поставил 2.0.49 и все прошло на ура.
Правда в чем он заключался я так и непонял. | |
|
|
|