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

Форум MySQL

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

 

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

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

тема: Зависание при выполнении скрипта
 
 автор: technic611   (08.07.2006 в 15:37)   письмо автору
 
 

При поиске слов с помощью Fulltext происходит зависание.
Посмотрите запрос.



Ключевые слова в которых и проблема, но она возникает только если искать более одного слова.
$keywords=$_POST['keywords'];
if($keywords)
{
$temp= strtok($keywords, " ");
$search_keywords="";
while($temp)
{

if($q==true)
$search_keywords .= " OR MATCH (opisanie) AGAINST ('$temp')";
else $search_keywords .= "and MATCH (opisanie) AGAINST ('$temp')";
$q=true;
$temp=strtok(" ");
}
}


$search="SELECT car.id_product, car.marka,
 car.model, car.year, car.rul, car.volume, 
car.engine, car.trans, car.privod, car.probeg,
car.price, car.foto, car.date, car.id_catalog,
car.gorod, car.id_name, gorod.name, opisanie_car.opisanie
FROM car, gorod, opisanie_car
WHERE car.hide='1' and car.id_product=opisanie_car.id_product $search_keywords
".$tmp1.$tmp2.$tmp3.$tmp4.$tmp5.$tmp6.$tmp7.$tmp8.$tmp9.$tmp10.$tmp11.$tmp12.$tmp13.$tmp14.$tmp15.$tmp16.$tmp17." ORDER BY $strtmp LIMIT $start, $pnumber";
  $prt = mysql_query($search);


Если ищу с помощью одно слово, поиск ведется правильно. А если два и более сервер зависает
В чем здесь проблема.

Структуры таблиц



CREATE TABLE 'car' (
  'id_product' int(11) NOT NULL auto_increment,
  'marka' tinytext NOT NULL,
  'model' tinytext NOT NULL,
  'year' int(4) NOT NULL default '0',
  'volume' tinytext NOT NULL,
  'engine' enum('dis','ben') NOT NULL default 'dis',
  'trans' enum('av','me','va') NOT NULL default 'av',
  'privod' enum('no','per','zad','pol') NOT NULL default 'per',
  'probeg' tinytext NOT NULL,
  'rul' enum('p','l') NOT NULL default 'p',
  'sost' tinytext NOT NULL,
  'gt' int(1) NOT NULL default '0',
  'price' int(5) NOT NULL default '0',
  'foto' int(1) NOT NULL default '0',
  'gorod' int(3) NOT NULL default '0',
  'date' date NOT NULL default '0000-00-00',
  'id_catalog' int(2) NOT NULL default '0',
  'hide' int(1) NOT NULL default '0',
  'id_name' int(11) NOT NULL default '0',
  'id_model' int(11) NOT NULL default '0',
  PRIMARY KEY  ('id_product'),
  KEY 'id_catalog' ('id_catalog'),
  KEY 'id_name' ('id_name'),
  KEY 'id_model' ('id_model')
) TYPE=MyISAM




CREATE TABLE 'opisanie_car' (
  'id_opisanie' int(11) NOT NULL auto_increment,
  'kontakt' tinytext NOT NULL,
  'opisanie' text NOT NULL,
  'sm' int(3) NOT NULL default '0',
  'id_product' int(11) NOT NULL default '0',
  PRIMARY KEY  ('id_opisanie'),
  KEY 'id_product' ('id_product'),
  FULLTEXT KEY 'opisanie' ('opisanie')
) TYPE=MyISAM

   
 
 автор: cheops   (09.07.2006 в 10:37)   письмо автору
 
   для: technic611   (08.07.2006 в 15:37)
 

Это на сервере или локальной машине?

   
 
 автор: technic611   (09.07.2006 в 11:03)   письмо автору
 
   для: cheops   (09.07.2006 в 10:37)
 

И на сервере и на локальной машине. Выдается ошибка что-то связано с лимитом в 30 секунд

   
 
 автор: cheops   (09.07.2006 в 13:43)   письмо автору
 
   для: technic611   (09.07.2006 в 11:03)
 

Хм... времени не хватает... а какой объём таблиц, сколько мегабайт они занимают и сколько в них записей?

   
 
 автор: technic611   (09.07.2006 в 15:15)   письмо автору
 
   для: cheops   (09.07.2006 в 13:43)
 

В той и другой таблице по 500 записей. Размер ппримерно по 100кб. В третьей таблице gorod 900 записей. Размер 40кб.

   
 
 автор: cheops   (09.07.2006 в 16:58)   письмо автору
 
   для: technic611   (09.07.2006 в 15:15)
 

Хм... не должно бы при таких мелких таблицах проблем возникать... Распечатайте запрос SELECT - как он выглядит, когда в него всё подставляется?

PS А зацикливание у вас нигде происходить не может?

   
 
 автор: technic611   (23.07.2006 в 15:23)   письмо автору
 
   для: cheops   (09.07.2006 в 16:58)
 

Зацикливания нет это точно. Так я пробовал вводить запрос напрямую в Phpmyadmin
А распечатка запроса показывает, что все значения подставляются куда надо.

SELECT car.id_product, car.marka, car.model, car.year, car.volume, car.engine, car.trans, car.privod, car.probeg, car.price, car.foto, car.date, car.id_catalog, car.id_name, car.gorod FROM car, opisanie_car WHERE car.hide='1' and MATCH (opisanie_car.opisanie) AGAINST ('сигнализация') OR MATCH (opisanie_car.opisanie) AGAINST ('литые диски') and car.id_product=opisanie_car.id_product and car.marka ='Acura' and car.model ='CL ' and car.year>=2004 and car.year<=2005 ORDER BY date DESC LIMIT 0, 30

Если искать только один параметр (н-р торлько сигнализация) все отлично исполняется.

Если два то сервер долго думает и выводит совсем не то что нужно. У меня на localhost вообще зависает

   
 
 автор: cheops   (23.07.2006 в 16:13)   письмо автору
 
   для: technic611   (23.07.2006 в 15:23)
 

А phpMyAdmin нормально выполняет запрос не зависает? Или тоже виснет?

   
 
 автор: technic611   (23.07.2006 в 16:44)   письмо автору
 
   для: cheops   (23.07.2006 в 16:13)
 

Тоже долго думает потом выводит ошибку

#1114 - The table '#sql_c0_0' is full

   
 
 автор: cheops   (23.07.2006 в 18:10)   письмо автору
 
   для: technic611   (23.07.2006 в 16:44)
 

Хм... достаточно странная ошибка... У вас какая версия MySQL?

   
 
 автор: technic611   (24.07.2006 в 16:01)   письмо автору
 
   для: cheops   (23.07.2006 в 18:10)
 

MySQL 4.0.21-nt

   
Rambler's Top100
вверх

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