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

Форум PHP

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

 

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

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

тема: Вывод файла
 
 автор: diablo_   (16.01.2007 в 14:11)   письмо автору
 
 

Уважаемые, когда начал выводить файлы вот таким образом

if (@mysql_num_rows($GLOBALS['my']->sql_res)!=0){
    $tutor_path = @mysql_fetch_array($GLOBALS['my']->sql_res);
    $edit=true;
    $GLOBALS['my']->sql_query="Update  `path` set counts=counts+1 where `keys`='".$keys."' ";
    $GLOBALS['my']->sql_execute();
$pages=intval($tutor_path['pages']);
$tut="/".$tutor_path['path']."/".'index.htm';
}else{echo '<br><b>Запрашиваемая страница, отсутствует!</b>'; return;exit();}

echo "<br>";
include $_SERVER['DOCUMENT_ROOT'].$tut;

После того, как я начал открывать файлы подобным образом, появилась очень большая нагрузка на сервер! Что делать?

   
 
 автор: Poison   (16.01.2007 в 14:57)   письмо автору
 
   для: diablo_   (16.01.2007 в 14:11)
 

Не открывать таким образом=)

   
 
 автор: vbps   (16.01.2007 в 16:35)   письмо автору
 
   для: diablo_   (16.01.2007 в 14:11)
 

Это уже слишком!!! Можно ведь все проще и никакой нагрузки.

   
 
 автор: Diablo_   (16.01.2007 в 18:19)   письмо автору
 
   для: vbps   (16.01.2007 в 16:35)
 

Например как?

   
 
 автор: Diablo_   (16.01.2007 в 22:15)   письмо автору
 
   для: Diablo_   (16.01.2007 в 18:19)
 

Так как правельно и сделать то?

   
 
 автор: kasmanaft   (16.01.2007 в 22:24)   письмо автору
 
   для: diablo_   (16.01.2007 в 14:11)
 

Вроде ничего страшного в скрипте нет ... только не понятно зачем тут "return"
>> После того, как я начал открывать файлы подобным образом
А как раньше открывали?

   
 
 автор: Diablo_   (16.01.2007 в 23:21)   письмо автору
 
   для: kasmanaft   (16.01.2007 в 22:24)
 

а раньше были прописаны файлы в бд с их именами и тд..
а теперь как бы по щаблону а в бд, хранится только путь!

   
 
 автор: kasmanaft   (17.01.2007 в 07:10)   письмо автору
 
   для: Diablo_   (16.01.2007 в 23:21)
 

Дану, прочитать файл из БД более напряжно, чем повесить это дело на файловую систему.
По-моему проблема не в приведенном коде.

   
 
 автор: XPraptor   (17.01.2007 в 11:44)   письмо автору
 
   для: kasmanaft   (17.01.2007 в 07:10)
 

Ну в принципе, если у вас большая посещаемость, то новый метод нагрузит сервак. Раньше вы грузили только БД, поэтому и не было на сервере нагрузки, теперь БД меньше напрягается, зато сервак работает по полной. ИМХО тут нужно смотреть по посетителям, когда достигнет предела нагрузка, нужно новый метод придумывать.
Ну и еще, если у хостера есть возможность кэширования (об этом они в мануале пишут), то отстройте кэширование ваших файлов, тогда нагрузка упадет на ваш сервер.

   
 
 автор: Diablo_   (17.01.2007 в 11:52)   письмо автору
 
   для: XPraptor   (17.01.2007 в 11:44)
 

посещаемость, прмерно 1000 в сутки!
А какой метод придумать то??? Мне уже ничего в голову не приходит!

   
 
 автор: XPraptor   (17.01.2007 в 11:55)   письмо автору
 
   для: Diablo_   (17.01.2007 в 11:52)
 

Да нет, с такой посещаемостью не должно быть нагрузки методом инклюде. Смотри в другом месте проблемму. Может у тебя где нить тройные вложения инклюдом идут в скриптах такое не желательно, лучше разбить на разные файлы и инклюдить поочереди в одном файле чем друг в друге вложенно.

   
 
 автор: Diablo_   (17.01.2007 в 11:58)   письмо автору
 
   для: XPraptor   (17.01.2007 в 11:55)
 

вот взгляните, весь скрипт! всего 3 функции.

<?
###################################################################################################
// Вывод страниц с уроками
###################################################################################################
function tutor_page()
{
$num_razdel=addslashes(htmlspecialchars($_REQUEST['id']));
$name_razdel='';
// 1 - 3dsmax, 2 - PhotoShop, 3 - Maya
$razdel_tutor=array("none","3dsmax","photoshop","maya");
for(
$i=1;$i<count($razdel_tutor);$i++){
if(
$num_razdel==$razdel_tutor[$i]){
$name_razdel=$num_razdel;
$num_razdel=$i;
}}
$tutor_echo_opredelenie=false;
$per_page=15;
// получаем номер страницы
if (isset($_REQUEST['page'])) intval($page=($_REQUEST['page']-1)); else $page=0;
// вычисляем первый оператор для LIMIT
$start=abs($page*$per_page);
// составляем запрос и выводим записи
// переменную $start используем, как нумератор записей.
$tutor_echo='';
$GLOBALS['my']->sql_query="SELECT `keys`, `path`, `title`, `counts`, `avtor` FROM `path` where razdel='".$num_razdel."' and data<='".date('Y-m-d')."' ORDER BY data DESC LIMIT $start,$per_page";
$GLOBALS['my']->sql_execute();
 if (@
mysql_num_rows($GLOBALS['my']->sql_res)!=0){
 
$tutor_echo_opredelenie=true;
while(
$tutor=mysql_fetch_array($GLOBALS['my']->sql_res)) {
$tutor_echo.='<table width="100%" border="0"><tr>
<td width="19%" id=td_ rowspan="2" align="center" valign="middle"><img src="'
.$tutor['path'].'/index.jpg" /></td>
<td width="81%" id=td_ height="60" align="left"><a href="index.php?id='
.$name_razdel.'&tutor='.$tutor['keys'].'">'.$tutor['title'].'</a></td>
</tr><tr>
<td height="10" id=td_ align="right" valign="middle" class="style8">Автор:'
.$tutor['avtor'].' :: Просмотров:'.$tutor['counts'].'</td>
</tr></table>'
;    
}}
// дальше выводим ссылки на страницы:
$GLOBALS['my']->sql_query="SELECT count(`keys`) FROM `path` where razdel='".$num_razdel."' and data<='".date('Y-m-d')."' ";
$res=mysql_query($GLOBALS['my']->sql_query);
$tutor=mysql_fetch_row($res);
$total_rows=$tutor[0];

$num_pages=ceil($total_rows/$per_page);
$nav_page='<table width="100%" border="0"><tr><td id=button_page_up>Страницы</td>';
for(
$i=1;$i<=$num_pages;$i++) {
  if (
$i-== $page) {
    
$nav_page.='<td id=button_page_down>'.$i.'</td>';
  } else {
    
$nav_page.='<td id=button_page_up><a href="'.$_SERVER['PHP_SELF'].'?id='.$name_razdel.'&page='.$i.'">'.$i.'</a></td>';
  }
}
$nav_page.='</tr></table>';
if(
$tutor_echo_opredelenie==true){
include 
"modules/3dsmax/form_razdel.php";
echo 
$nav_page;
echo 
$tutor_echo;
echo 
$nav_page;
}
}
###################################################################################################
// Вывод запрашиваемой страницы
###################################################################################################
function vyvod_tutora()
{
$num_razdel=addslashes(htmlspecialchars($_REQUEST['id']));
$name_razdel='';
// 1 - 3dsmax, 2 - PhotoShop, 3 - Maya
$razdel_tutor=array("none","3dsmax","photoshop","maya");
for(
$i=1;$i<count($razdel_tutor);$i++){
if(
$num_razdel==$razdel_tutor[$i]){
$name_razdel=$num_razdel;
$num_razdel=$i;
}}
$edit=false;
$keys=intval($_REQUEST['tutor']);
$GLOBALS['my']->sql_query="select `path`, `pages` from `path` where `keys`='".$keys."' ";
$GLOBALS['my']->sql_execute();
if (@
mysql_num_rows($GLOBALS['my']->sql_res)!=0){
    
$tutor_path = @mysql_fetch_array($GLOBALS['my']->sql_res);
    
$edit=true;
    
$GLOBALS['my']->sql_query="Update  `path` set counts=counts+1 where `keys`='".$keys."' ";
    
$GLOBALS['my']->sql_execute();
$pages=intval($tutor_path['pages']);
$tut="/".$tutor_path['path']."/".'index.htm';
}else{echo 
'<br><b>Запрашиваемая страница, отсутствует!</b>'; return;exit();}

echo 
"<br>";
include 
$_SERVER['DOCUMENT_ROOT'].$tut;
//--------------------------
// вывод страниц
if($pages>1){
$nav_page='';
for(
$i=1;$i<=$pages;$i++){
if(
$i=='1'){
$nav_page.='<a href="'.$_SERVER['PHP_SELF'].'?id='.$name_razdel.'&tutor='.$keys.'">'.$i.'</a> ';
}else{
$nav_page.='<a href="'.$_SERVER['PHP_SELF'].'?id='.$name_razdel.'&tutor='.$keys.'&d_page='.$i.'">'.$i.'</a> ';
}}echo 
$nav_page;}
//--------------------------
//----Комментарии-------
if($edit==true){
$echo_coment_form=$_SERVER['DOCUMENT_ROOT']."/modules/comment/formcomment.php";
$commentator='';
$GLOBALS['my']->sql_query="select `user_name`, `date`, `time`, `comment_text` from comment where id_page='".$keys."'";
$GLOBALS['my']->sql_execute();

if (@
mysql_num_rows($GLOBALS['my']->sql_res)!=0){
while (
$coment_text mysql_fetch_array($GLOBALS['my']->sql_res)) {
        
$comme_nt=$coment_text['comment_text'];
        
$user_name=$coment_text['user_name'];
        
$date=$coment_text['date'];    
        
$time=$coment_text['time'];
        
$commentator.='<table id=coment width="340px" border="0" cellspacing="0" cellpadding="0"><tr><td class="style8"><B>Автор: '.$user_name.'</B> [Дата:'.$date.' :: Время:'.$time.'] </td></tr><tr><td class="style8">'.$comme_nt.'</td></tr></table><BR>';
    }
}else{
$commentator.='';}
include 
$echo_coment_form;
echo 
$commentator;
}
//----------------------
}
###################################################################################################
// Вывод запрашиваемой второй страницы
###################################################################################################
function d_page()
{
$num_razdel=addslashes(htmlspecialchars($_REQUEST['id']));
$name_razdel='';
// 1 - 3dsmax, 2 - PhotoShop, 3 - Maya
$razdel_tutor=array("none","3dsmax","photoshop","maya");
for(
$i=1;$i<count($razdel_tutor);$i++){
if(
$num_razdel==$razdel_tutor[$i]){
$name_razdel=$num_razdel;
$num_razdel=$i;
}}
$edit=false;
$keys=intval($_REQUEST['tutor']);
$d_page=intval($_REQUEST['d_page']);
$GLOBALS['my']->sql_query="select `path`, `pages` from `path` where `keys`='".$keys."' ";
$GLOBALS['my']->sql_execute();
if (@
mysql_num_rows($GLOBALS['my']->sql_res)!=0){
    
$tutor_page = @mysql_fetch_array($GLOBALS['my']->sql_res);
    
$pages=intval($tutor_page['pages']);
        
$GLOBALS['my']->sql_query="Update  `path` set counts=counts+1 where `keys`='".$keys."' ";
        
$GLOBALS['my']->sql_execute();
}
if(
$pages>=$d_page){
$edit=true;
$tut="/".$tutor_page['path']."/".'index'.$d_page.'.htm';
}

if(
$edit==true){
echo 
"<br>";
include 
$_SERVER['DOCUMENT_ROOT'].$tut;
//--------------------------
// вывод страниц
if($pages>1){
$nav_page='';
for(
$i=1;$i<=$pages;$i++){
if(
$i=='1'){
$nav_page.='<a href="'.$_SERVER['PHP_SELF'].'?id='.$name_razdel.'&tutor='.$keys.'">'.$i.'</a> ';
}else{
$nav_page.='<a href="'.$_SERVER['PHP_SELF'].'?id='.$name_razdel.'&tutor='.$keys.'&d_page='.$i.'">'.$i.'</a> ';
}}echo 
$nav_page;}
//--------------------------
}else{
echo 
'<br><b>Запрашиваемая страница, отсутствует!</b>';}
//----Комментарии-------
if($edit==true){
$echo_coment_form=$_SERVER['DOCUMENT_ROOT']."/modules/comment/formcomment.php";
$commentator='';
$GLOBALS['my']->sql_query="select `user_name`, `date`, `time`, `comment_text` from comment where id_page='".$keys."'";
$GLOBALS['my']->sql_execute();

if (@
mysql_num_rows($GLOBALS['my']->sql_res)!=0){
while (
$coment_text mysql_fetch_array($GLOBALS['my']->sql_res)) {
        
$comme_nt=$coment_text['comment_text'];
        
$user_name=$coment_text['user_name'];
        
$date=$coment_text['date'];    
        
$time=$coment_text['time'];
        
$commentator.='<table id=coment width="340px" border="0" cellspacing="0" cellpadding="0"><tr><td class="style8"><B>Автор: '.$user_name.'</B> [Дата:'.$date.' :: Время:'.$time.'] </td></tr><tr><td class="style8">'.$comme_nt.'</td></tr></table><BR>';
    }
}else{
$commentator.='';}
include 
$echo_coment_form;
echo 
$commentator;
}
//----------------------
}
###################################################################################################
// Вывод страниц с уроками дополнительные разделы
###################################################################################################
function dop_razdel()
{
include 
"config.php";
$num_razdel=addslashes(htmlspecialchars($_REQUEST['id']));
$name_razdel='';
$id_dop=intval($_REQUEST['dop_razdel']);
// 1 - 3dsmax, 2 - PhotoShop, 3 - Maya
$razdel_tutor=array("none","3dsmax","photoshop","maya");
for(
$i=1;$i<count($razdel_tutor);$i++){
if(
$num_razdel==$razdel_tutor[$i]){
$name_razdel=$num_razdel;
$num_razdel=$i;
}}
$tutor_echo_opredelenie=false;
$per_page=15;
// получаем номер страницы
if (isset($_REQUEST['page'])) intval($page=($_REQUEST['page']-1)); else $page=0;
// вычисляем первый оператор для LIMIT
$start=abs($page*$per_page);
// составляем запрос и выводим записи
// переменную $start используем, как нумератор записей.
$tutor_echo='';
$GLOBALS['my']->sql_query="SELECT `keys`, `path`, `title`, `counts`, `avtor` FROM `path` where razdel='".$num_razdel."' and dop_razdel='".$id_dop."' and data<='".date('Y-m-d')."' ORDER BY data DESC LIMIT $start,$per_page";
$GLOBALS['my']->sql_execute();
 if (@
mysql_num_rows($GLOBALS['my']->sql_res)!=0){
 
$tutor_echo_opredelenie=true;
while(
$tutor=mysql_fetch_array($GLOBALS['my']->sql_res)) {
$tutor_echo.='<table width="100%" border="0"><tr>
<td width="19%" id=td_ rowspan="2" align="center" valign="middle"><img src="'
.$tutor['path'].'/index.jpg" /></td>
<td width="81%" id=td_ height="60" align="left"><a href="index.php?id='
.$name_razdel.'&tutor='.$tutor['keys'].'">'.$tutor['title'].'</a></td>
</tr><tr>
<td height="10" id=td_ align="right" valign="middle" class="style8">Автор:'
.$tutor['avtor'].' :: Просмотров:'.$tutor['counts'].'</td>
</tr></table>'
;    
}}
// дальше выводим ссылки на страницы:
$GLOBALS['my']->sql_query="SELECT count(`keys`) FROM `path` where razdel='".$num_razdel."' and dop_razdel='".$id_dop."' ";
$res=mysql_query($GLOBALS['my']->sql_query);
$tutor=mysql_fetch_row($res);
$total_rows=$tutor[0];

$num_pages=ceil($total_rows/$per_page);
$nav_page='<table width="100%" border="0"><tr><td id=button_page_up>Страницы</td>';
for(
$i=1;$i<=$num_pages;$i++) {
  if (
$i-== $page) {
    
$nav_page.='<td id=button_page_down>'.$i.'</td>';
  } else {
    
$nav_page.='<td id=button_page_up><a href="'.$_SERVER['PHP_SELF'].'?id='.$name_razdel.'&dop_razdel='.$id_dop.'&page='.$i.'">'.$i.'</a></td>';
  }
}
$nav_page.='</tr></table>';
if(
$tutor_echo_opredelenie==true){
include 
"modules/3dsmax/form_razdel.php";
echo 
$nav_page;
echo 
$tutor_echo;
echo 
$nav_page;
}
}
###################################################################################################
// Извлечение
###################################################################################################
if((($_REQUEST['id']==='3dsmax') || ($_REQUEST['id']==='photoshop') || ($_REQUEST['id']==='maya'))&&(!@$_REQUEST['tutor'])&&(!@$_REQUEST['d_page'])&&(!@$_REQUEST['dop_razdel'])){
echo 
tutor_page();
}

if((@
$_REQUEST['tutor']!='')&&(!@$_REQUEST['d_page'])){
echo 
vyvod_tutora();
}

if((@
$_REQUEST['d_page']!='')&&(!@$_REQUEST['dop_razdel'])){
echo 
d_page();
}

if(@
$_REQUEST['dop_razdel']!=''){
echo 
dop_razdel();
}
?>

Вроде бы всё нормально!

   
 
 автор: XPraptor   (17.01.2007 в 12:08)   письмо автору
 
   для: Diablo_   (17.01.2007 в 11:58)
 

Немного запутано все. Для простой операции вывода ссылок и файлов - очень много кода. Да, вместо include везде используйте include_once, возможно у вас происходит двойное или тройное открытие одних и тех же файлов и соединений.

   
 
 автор: Diablo_   (17.01.2007 в 12:34)   письмо автору
 
   для: XPraptor   (17.01.2007 в 12:08)
 

ну почему простого вывода файла! там же ещё и коменты выводятся и какие либо условия! Там всё по минимому!

   
 
 автор: Diablo_   (17.01.2007 в 12:46)   письмо автору
 
   для: diablo_   (16.01.2007 в 14:11)
 

Или можно как то код упростить?

   
 
 автор: Diablo_   (17.01.2007 в 14:35)   письмо автору
 
   для: Diablo_   (17.01.2007 в 12:46)
 

Просто я уже незнаю что делать! так как скрипт работает нормлаьно! а нагрузка то идёт!!! И что делать, незнаю!

   
Rambler's Top100
вверх

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