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

Форум PHP

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

 

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

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

тема: Оптимизация кода... mysql... нагрузка на сервер...
 
 автор: eclipse   (08.03.2006 в 17:42)   письмо автору
 
 

Приветствую... у меня к вам оч важный и срочный вопрос... один из скриптов... скорее всего этот делает огромную нагрузку на сервер... просьба посмотреть и указать на недочёты и на неправильности....

                <? 
                
                $id 
$_GET['id']; 
            
                require(
"config.php"); 
                
mysql_connect($host,$user,$pass) or die(mysql_error()); 
                
mysql_select_db($name) or die(mysql_error()); 
                
$query="SELECT title, id_cat FROM category WHERE id=$id"
                
$result mysql_query($query); 
                while(
$row mysql_fetch_array($result)){ 
                
$title $row['title']; 
                
$id_cat $row['id_cat']; 
                } 
                 
                
$url[] = $id
                
                while (
$id_cat != 1) { 
                 
$query="SELECT id_cat, id FROM category WHERE id=$id_cat"
                 
$result mysql_query($query); 
                  while(
$row mysql_fetch_array($result)){ 
                   
$id_cat $row['id_cat']; 
                   
$id $row['id']; 
                   
$url[] = $id;} 
                } 
        
               
krsort($url); 
               foreach(
$url as $index => $val
               { 
                 
$query="SELECT title FROM cid WHERE id=$val"
                 
$result mysql_query($query); 
                 while(
$row mysql_fetch_array($result)){ 
                 
$title $row['title']; 
                  echo 
" > "
                  echo 
"<a href=\"file.php?id=$val\"><span lang=\"ru\">$title</span></a>";} 
               } 
               
mysql_close(); 
                
?> 

скорее всего всё всегда из за циклов... или нада каждый раз прописывать коннект при поиске в таблице и каждый раз его закрывать.... вобще оч надо чтобы кто нибудь указал ошибки чтобы в дальнейшем их никогда не повторил.... заранее огромное спасибо

   
 
 автор: eclipse   (08.03.2006 в 18:43)   письмо автору
 
   для: eclipse   (08.03.2006 в 17:42)
 

Наверное даже стоит немного изменить мой вопрос... стоит ли при каждом $query делать mysql_connect и mysql_close??? может это значительно уменьшит нагрузку на сервер...

   
 
 автор: kasmanaft   (08.03.2006 в 18:58)   письмо автору
 
   для: eclipse   (08.03.2006 в 18:43)
 

было бы неплохо знать что делает этот скрипт :)

хотя бы вот эта часть: (лучше конечно укажите, что вы хотите получить работой всего скрипта... )
while ($id_cat != 1) {
$query="SELECT id_cat, id FROM category WHERE id=$id_cat";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id_cat = $row['id_cat'];
$id = $row['id'];
$url[] = $id;}
а каждый раз подключаться к базе, наверное, не стоит... это скорее всего замедлит работу, чем ускорит... хотя заметить этого вы наверно не успеете :)

   
 
 автор: eclipse   (08.03.2006 в 19:14)   письмо автору
 
   для: kasmanaft   (08.03.2006 в 18:58)
 

ну наконец то есть ответ =) а то мне оч оч оч оч нада как можно скорее подправить ошибки =) этот скрипт реализует показ следа на сайте то есть Главная > Категория 1 > Категория 2 > Категория 3 etc =) id это номер конечной категории на сайте... для каждой категории прописывается подкатегория id_cat =) то есть этот скрипт по канечной категории id приходит к первоначальной и всё это записывается в $url =) ну а далее идёт сортировка так как если её не сделать вывод будет такой Главная > Категория 3 > Категория 2 > Категория 1 =) ссылка Главное статична....
И чтобы ввести в курс дела про нагрузку на свервер у меня в одном пхп-файле открывается несколько соединений... то есть есть не сколько конструкций вида

                $id = $_GET['id']; 
             
                require("config.php"); 
                mysql_connect($host,$user,$pass) or die(mysql_error()); 
                mysql_select_db($name) or die(mysql_error());

               <!-- code; -->
               mysql_close();

сначала я подумал что именно эти несколько соединений нагружают сервер... но после каждого коннекта прописывается и закрытие... именно поэтому я остановился на том скрипте который я привёл в самом начале...

   
 
 автор: kasmanaft   (08.03.2006 в 19:50)   письмо автору
 
   для: eclipse   (08.03.2006 в 19:14)
 

раз все молчат, а помощь оч оч оч оч нужна :) постораючь помочь чем смогу :)
как я понял, скрипт работает... верно?
(а если он работает, причем правильно....... вроде бы в нем нет ничего такого, что могло бы так сильно загрузить сервер)

   
 
 автор: eclipse   (08.03.2006 в 19:55)   письмо автору
 
   для: kasmanaft   (08.03.2006 в 19:50)
 

да =) конечно =) всё работает... но создаёт нагрузку на сервер... из за чего создаются траблы с хостингом... поэтому мне надо найти ошибки как можно скорее =) и огромное спасибо что отзываетесь и пытаетесь помочь =)

   
 
 автор: eclipse   (08.03.2006 в 19:58)   письмо автору
 
   для: eclipse   (08.03.2006 в 19:55)
 

вообще админ хоста говорит что создаются 2-3 соединения и тогда уже мускл просто падает... хотя я стараюсь всё писать правильна... но опыта именно в пхп немного... хватает в других языках... так что может стоит показать ещё два скрипта во всём коде... максимум в коде у меня три соединения....

   
 
 автор: kasmanaft   (08.03.2006 в 20:05)   письмо автору
 
   для: eclipse   (08.03.2006 в 19:58)
 

вообще-то лучше наврное сделать как все (если что не бить, насчет всех :))
и в файле config.php устанавливать соединение... один раз.

   
 
 автор: eclipse   (08.03.2006 в 20:07)   письмо автору
 
   для: eclipse   (08.03.2006 в 19:58)
 

и ещё раз огромное спасибо kasmanaft... может проще будет если вы мне на мыло кинете номер вашей аськи... так решить проблему будет удобнее... правда это уж слишком нагло уже просить такой помощи... но всё же...

   
 
 автор: eclipse   (08.03.2006 в 20:10)   письмо автору
 
   для: eclipse   (08.03.2006 в 20:07)
 

а можно ли поподробнее про конфиги??? =) у меня там прописано лишь хост юзер пассверд и имя бд....

   
 
 автор: kasmanaft   (08.03.2006 в 20:19)   письмо автору
 
   для: eclipse   (08.03.2006 в 20:10)
 

послал адрес аськи.....
все правильно... я говорю, что правильнее (или может быть удобнее) было бы сделать файл config.php (который у вас вроде бы имеется) в котором и устанавливать соединение с базой...
давайте по аське...

   
Rambler's Top100
вверх

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