Оптимизация

STEAM

Новичок
Репутация
0 / 1 299
Очень извеняюсь за удаление темы поэтому считаю нужным её востановить.
В этой теме я напишу только полезные сообщения из старой темы без флуда и тому подобного.

1) Как уменьшить нагрузку?

Ищи где используеться метод

Код:
SELECT * FROM

убедись, что тебе НЕ нужны ВСЕ результаты из данной таблицы и замени звездоку на определенные наименования.

Например если есть запрос

Код:
SELECT * FROM players where player_id='$some_id'


но в этом запросе интересует только логин пользователя, то так и напиши

Код:
SELECT login FROM players where player_id='$some_id'

© AndrjuXA

2) Переделай чат на тхт файл, с самоочисткой. чтобы к базе не грузился.
Замени все что можеш на js помаксимому.
бои я бы тоже советовал на файлы сделать (но не всё только часть).

© Gangman

3) можно все не изменяемые данные пихать в сессии!

© eaglenix

4) Перепись скрипта на сесии. в начале пхп файлов, где будут использоваться сессии после


Код:
<?


нужно прописать начало сессий


Код:
<?
session_start();


потом можно сделать такую проверку

Код:
if (!isset($_SESSION['something'])) {
$data = mysql_fetch_array(mysql_query("SELECT something FROM somewhere WHERE something_else='$variable' "));
    $_SESSION['something'] = $data['something'];
}


теперь, чтобы получить информацию, ты вызываешь переменную $_SESSION['something'], a не запрос к базе.

© AndrjuXA

5) Реализация чата на файлах.
http://www.webmasterschool.ru/script/script5.php

Почитай как реализовать чат на файлах.

© Gangman

6) Насчет файлов большие файлы куда больше тормозят чем большая база и возникает куда больше сбоев в работе
Правельно построяный чат и общая база в разы увеличет скорость работы. А если еще и AJAX то это вообще будет конфентка. Тут главное правельно все оргонизовать

© Dik

7) избегать подключений к базам где много полей и самого содержимого таких как players например,лишний2 раз не стоит к ней подключатся...

© Evilidze

8) Еще вариант просто извлеч из таблици плэерс те поля которые используются редко и пеерместить их в другую а в скрипте просто изменить название таблици. У меня к примеру 3 таблици
players - основные данные о персонаже которые используются чаще всего
players_inf - инфа персонажа
players_prof - информация о профессиях, навыках и т.д что редко используется.

© STEAM


P.S еще раз извеняюсь.
 
:) Практически все методы что тут описаны основываются на уменьшении обращений к БД. :) Можно написать мегатормознутый скрипт ваще без БД.
http://www.phpbench.com/ Если вы это осилите, то поймёте что MySQL не главное.
 
Если выполнить первый пункт, то во сколько раз это увеличит скорость?И вот я так оптимизировал лес...Правильно ли?
Код:
<?
include("../config/config.php");

##################### Класс борьбы с SQL атаками ################
include_once("../config/sql.php");

$stop_injection = new InitVars();
$stop_injection->checkVars();
##################### Класс борьбы с SQL атаками ################

$stat = mysql_fetch_array(mysql_query("SELECT id,user,bloked,t_time,battle,room,les,proff,ustal_now,r_action  FROM `person` WHERE `user` = '".$_COOKIE['user']."' AND `pass` = '".$_COOKIE['pass']."' LIMIT 1"));
if ($stat['bloked']) echo"<script>top.location='../index.php?action=logout'</script>";

if ($stat[t_time]) { header("Location: prison.php"); exit; }
elseif ($stat[battle]) { header("Location: ../battle.php"); exit; }
elseif ($stat[room]!="34") { header("Location: ../main.php"); exit; }
else {
$ppp=mysql_fetch_array(mysql_query("SELECT * FROM Les WHERE id='".$stat['id']."'"));
$now=time();
$left_time=$stat["les"]-$now;
$left_min=floor($left_time/60);
$left_sec=$left_time-$left_min*60;

include("../config/html_city.php");
?>
<BODY topmargin=0 marginheight=0 leftmargin=0 rightmargin=0 bottomMargin=0  bgcolor="dedede" >
<?
$rabotka= htmlspecialchars($stat["les"]);
if ($stat['proff'] != 9 || !$ppp){
print"<table width='100%' border='0' cellpadding='0' cellspacing='0'>

<tr>
<td width='210' height='18' align='left'><INPUT onclick='top.frames[\"main\"].location = \"les.php?go=\"+Math.random();\"\"' type=button value='В город' name=inv title='В город' class=btn><input type='submit' name='Submit2' value='Обновить'  class=btn onClick='parent.main.location =\"les.php?tmp=\"+Math.random();\"\"' /></td>
<td width='60%' align='center'>[b]<font color='green' size='3'>Заповедный лес</font>[/b]
</td>
<td width='215' align='right'>
 </td>
</tr>
</table>
[CENTER]
<table border='0' width='953' height='279' cellpadding='0' cellspacing='0'>
<tr>
<td height='242' width='943' colspan='4'>
<table border='0' width='943' height='302' id='table2'>
<tr>
<td height='296' width='672' rowspan='3'>
<div align='center'>
<table border='0' width='672' height='344' cellspacing='0' cellpadding='0' id='table3'>
<tr>
<td height='344' width='672'>
<img border='0' src='../img/world/les.jpg' width='671' height='344'></td>
</tr>
</table>
[/CENTER]
</td>
<tr>
<td height='318' width='255'>
[b]Чтобы начать поиски в лесу Вам
нужно получить профессию [u]травника[/u].[/b]


";
if ($stat['proff'] == 9) echo"
<form method='POST' action=les.php?act=ust>
<input type='submit' value='Устроиться Травником' name='B3' class=btn>
</form>";
echo"

















</tr>
</td>
</tr>
</table>
<HR>
";
}elseif ($stat['proff'] == 9 && $rabotka==0) {
print"<table width='100%' border='0' cellpadding='0' cellspacing='0' height='23'>

<tr>
<td height='22' align='left'></td>
<td width='538' align='center' rowspan='2'>[b]<font color='green' size='3'>Заповедный лес</font>[/b]
</td>
<td align='right' rowspan='2' width='195'>
 </td>
    </tr>
    <tr>
    <td height='1' width='272'></td>
    </tr>
</table>
[CENTER]
<table border='0' width='953' height='279' cellpadding='0' cellspacing='0'>
<tr>
<td height='242' width='943' colspan='4'>
<table border='0' width='943' height='302' id='table2'>
<tr>
<td height='296' width='672' rowspan='3'>
<div align='center'>
<table border='0' width='672' height='344' cellspacing='0' cellpadding='0' id='table3'>
<tr>
<td height='344' width='672'>
<img border='0' src='../img/world/les.jpg' width='671' height='344'></td>
</tr>
</table>
[/CENTER]
</td>
<tr>
<td height='318' width='255'>";
$r1 = $ppp['res1'] + $ppp['res2'] + $ppp['res3'] + $ppp['res4'];
$r2 = $ppp['res5'] + $ppp['res6'] + $ppp['res7'];
$r3 = $ppp['res8'] + $ppp['res9'] + $ppp['res10'];
echo"<font color='RED'>• Ягоды</font> Всего: [b]".$r1."[/b] шт

   <font color='RED'>•</font> Брусника: [b]".$ppp['res1']."[/b] шт

   <font color='RED'>•</font> Земляника: [b]".$ppp['res2']."[/b] шт

   <font color='RED'>•</font> Черешня: [b]".$ppp['res3']."[/b] шт

   <font color='RED'>•</font> Малина: [b]".$ppp['res4']."[/b] шт

<font color='RED'>• Грибы</font> Всего: [b]".$r2."[/b] шт

   <font color='RED'>•</font> Подосиновик: [b]".$ppp['res5']."[/b] шт

   <font color='RED'>•</font> Поганка: [b]".$ppp['res6']."[/b] шт

   <font color='RED'>•</font> Лисичка: [b]".$ppp['res7']."[/b] шт

<font color='RED'>• Травы</font> Всего: [b]".$r3."[/b] шт

   <font color='RED'>•</font> Тимьян: [b]".$ppp['res8']."[/b] шт

   <font color='RED'>•</font> Зверобой: [b]".$ppp['res9']."[/b] шт

   <font color='RED'>•</font> Чернокорень: [b]".$ppp['res10']."[/b] шт


<font color='RED'>•</font> Осталось активности: ".$stat['ustal_now']."


<form method='POST' action=les.php?act=rabota>
<input type='submit' value='Начать поиски' name='B5' class=btn>

</form>
<INPUT onclick='top.frames[\"main\"].location = \"les.php?go=\"+Math.random();\"\"' type=button value='В дремучий лес' style='WIDTH: 130px' name=inv title='В дремучий лес' class=btn>
<input type='submit' name='Submit2' value='Обновить' style='WIDTH: 130px'  class=btn onClick='parent.main.location =\"les.php?tmp=\"+Math.random();\"\"' />

<body bgcolor=#EBEDEC leftmargin=0 topmargin=0>
<DIV id=hint1></DIV>
<div id=mainform style='position:absolute; left:171px; top:11px'></div>
<script LANGUAGE=\"JavaScript\" SRC=\"../img/js/time.js\"></SCRIPT>












";
}elseif ($stat['proff'] == 9 && $rabotka > 0){
print"
<table width='100%' border='0' cellpadding='0' cellspacing='0'>

<tr>
<td width='210' height='18' align='left'></td>
<td width='60%' align='center'>[b]<font color='green' size='3'>Заповедный лес</font>[/b]
</td>
<td width='215' align='right'>
&nbsp</td>
</tr>
</table>
[CENTER]
<table border='0' width='953' height='279' cellpadding='0' cellspacing='0'>
<tr>
<td height='242' width='943' colspan='4'>
<table border='0' width='943' height='302' id='table2'>
<tr>
<td height='296' width='672' rowspan='3'>
<div align='center'>
<table border='0' width='672' height='344' cellspacing='0' cellpadding='0' id='table3'>
<tr>
<td height='344' width='672'>
<img border='0' src='../img/world/les.jpg' width='671' height='344'></td>
</tr>
</table>
[/CENTER]
</td>
<tr>
<td height='318' width='255'>";
$r1 = $ppp['res1'] + $ppp['res2'] + $ppp['res3'] + $ppp['res4'];
$r2 = $ppp['res5'] + $ppp['res6'] + $ppp['res7'];
$r3 = $ppp['res8'] + $ppp['res9'] + $ppp['res10'];
echo"<font color='RED'>• Ягоды</font> Всего: [b]".$r1."[/b] шт

   <font color='RED'>•</font> Брусника: [b]".$ppp['res1']."[/b] шт

   <font color='RED'>•</font> Земляника: [b]".$ppp['res2']."[/b] шт

   <font color='RED'>•</font> Черешня: [b]".$ppp['res3']."[/b] шт

   <font color='RED'>•</font> Малина: [b]".$ppp['res4']."[/b] шт

<font color='RED'>• Грибы</font> Всего: [b]".$r2."[/b] шт

   <font color='RED'>•</font> Подосиновик: [b]".$ppp['res5']."[/b] шт

   <font color='RED'>•</font> Поганка: [b]".$ppp['res6']."[/b] шт

   <font color='RED'>•</font> Лисичка: [b]".$ppp['res7']."[/b] шт

<font color='RED'>• Травы</font> Всего: [b]".$r3."[/b] шт

   <font color='RED'>•</font> Тимьян: [b]".$ppp['res8']."[/b] шт

   <font color='RED'>•</font> Зверобой: [b]".$ppp['res9']."[/b] шт

   <font color='RED'>•</font> Чернокорень: [b]".$ppp['res10']."[/b] шт


<font color='RED'>•</font><script LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
<!--
  var t_m1 = $left_min;
  var t_s1 = $left_sec;
  var hTimeout = 0;
  function reloadTimeout() {
    if (t_s1 == 0 && t_m1 == 0) {
      if (hTimeout >= 0) clearTimeout(hTimeout);
      return;
    }
    t_s1 = t_s1-1;
    if (t_s1 < 0) {
      t_m1 = t_m1-1;
      t_s1 = 59;
    }
    if (t_m1 < 0) {
      t_m1 = 0;
      t_s1 = 0;
    }
    if (t_s1 == 0 && t_m1 == 0) {
      location.href='les.php?act=konec';
    }
    t_ms.innerHTML = 'Искать осталось: [b]'+t_m1+'[/b] мин. [b]'+t_s1+'[/b] сек.';
    if (hTimeout >= 0) clearTimeout(hTimeout);
    hTimeout = setTimeout(\"reloadTimeout()\", 1*1000);
  }
  hTimeout = setTimeout(\"reloadTimeout()\", 1*1000);
//-->

</SCRIPT> Искать осталось: [b]$left_min[/b] мин. [b]$left_sec[/b] сек.






















";
}else{
}

################
if($act==ust){
$QQQQ = mysql_query("INSERT INTO `Les`(id,res1) VALUES('".$stat['id']."','0')");
if($QQQQ){
echo '<script>alert("Вы устроились Травником")</script>';
echo "<meta http-equiv='refresh' content='0; url=les.php'>";
}else{
echo '<script>alert("Вы неустроились Травником")</script>';
}
}
###############################
if($act==konec){
if ($stat['les'] > 0){
$now2=time();
$left_time1=$stat["les"]-$now2;
if($left_time1<=0){
$ob = mysql_query("UPDATE person set les=0 where id='".$stat["id"]."'");
$f=rand(1,2);
if ($f == 2){
$a= rand(1,10);
if ($a==1){$naxodka="Ягоду Брусника"; $res="1";}
if ($a==2){$naxodka="Ягоду Земляника"; $res="2";}
if ($a==3){$naxodka="Ягоду Черешня"; $res="3";}
if ($a==4){$naxodka="Ягоду Малина"; $res="4";}
if ($a==5){$naxodka="Гриб подосиновик"; $res="5";}
if ($a==6){$naxodka="Гриб поганка"; $res="6";}
if ($a==7){$naxodka="Гриб лисичка"; $res="7";}
if ($a==8){$naxodka="Траву тимьян"; $res="8";}
if ($a==9){$naxodka="Траву зверобой"; $res="9";}
if ($a==10){$naxodka="Траву чернокорень"; $res="10";}

$kol_res=mt_rand(1,3);
$kol_all=$ppp["res".$res.""]+$kol_res;
$rabotttt = mysql_query("UPDATE Les SET res".$res."='".$kol_all."' WHERE id='".$stat["id"]."'");
if($rabotttt){
print '<script>alert("После 5-ти минутных поисков вы нашли '.$naxodka.' количеством '.$kol_res.' штук")</script>';
echo "<meta http-equiv='refresh' content='0.01; url=les.php'>";
}else echo '<script>alert("Ошипко")</script><meta http-equiv="refresh" content="0.01; url=les.php">';
}else echo '<script>alert("Вы ничего не нашли")</script><meta http-equiv="refresh" content="0.01; url=les.php">';
}}
}
###############################
if($act==rabota){
if($stat['ustal_now'] < 5){
print '<script>alert("Вы слишком уcтали приходите завтра")</script>';
die();
}
$tim=5;
$WAIT=5*60+time();
$rabot = mysql_query("UPDATE person SET les=$WAIT WHERE user='".$_COOKIE["user"]."'");
if($rabot){
print '<script>alert("Поиск начался)</script>';
echo "<meta http-equiv='refresh' content='0.01; url=les.php'>";
}else{
echo '<script>alert("Работа не может начаться")</script>';
}
}

if ($go) {
if ($stat['r_action'] == 0) {
if ($stat['les'] == 0) {
mysql_query("UPDATE person SET room=26, lpv=".$now." WHERE user='".$stat['user']."'");
echo"
<script LANGUAGE=\"JavaScript\">
<!--
top.frames['main'].location = \"forest.php\";
top.frames['online'].location = top.frames['online'].location;
//-->
</SCRIPT>
";
exit();
} else $msg = "Вы добываете ягоды!";
} else $msg = "Вы добываете древесину!";
}

}
?>
 
Намного. На пол секкунды возможно даже. Неплохо оптимизировал. Но ив все равно тормознутая вещь и нуждается в полной переделке, я в этом уже убедился=)
Ну если руки и башка есть то всё возможно...Я ша уже почти свой скрипт передал..Убрал ненужные запросы и т.п...Ща хочу взять с алонов чат и прикрутить....Говорят там быстрый и оптимизированный чат.
 
А вот что лучше и быстрее?И какая разница между ними?
include_once("скрипт");
include"скрипт";
 
А вот что лучше и быстрее?И какая разница между ними?
include_once("скрипт");
include"скрипт";
По скорости, мне кажется, разницы нет, а так include_once лучше, потому что файл никогда не будет инклюдиться несколько раз, если его попытаюстся иклюдить несколько раз.
 
Спасибо за ответ...
А вот я читал, что $i++ происходит немного медленнее, чем ++$i. Это правда? И если я сделаю замену, то какие последствия буду в скрипте?
 
кстати на счёт папки clan в средневековьях,так же орден который раскидан пиздец как и проверки сумашедшие лучше переписать их в один файл т.е. clan.php отдельно и orden.php отдельно где будут все функции,если грамотно всё организовать да ещё и заюзать js в нужных местах то будет работать быстрее,так же уберуться папки clan и почиститься папка magic)
 
Undead насчёт require_once был прав..Прочитал много статей и везде одно и тоже: "require_once дорого обходится. "
P.S. UnDeaD можно выложить твой мод, то что был на твоём блоге для разберания?(переход по локациям)
 
Вот я поменял везде include_once на include...Но в некоторых местах при замене появляються ошибки..Почему?
 
потому что оно инклюдиться один раз :) тебеж Андед написал что могут быть ошибки :)
 
UnDeaD, Закинь ка ту статейку и сюда в какой нить раздел)))
Конечно такая оптимизация много не выйграет но все же
 
И еще по оптимизации.
Лучше использовать разделенные базы и таблицы.
Допустим чат не обязательно писать на файлах т.к. при большой посещаемости и при сбои сервера он проста может не работать.
Тут лучше сделать отдельную БД для чата в которой разместить рабочую таблицу и таблицу истории и написать демон или крон который будит чистить рабочую БД так проще.
Есть еще вареант для каждой комнаты сделать отдельную таблицу при таком раскладе запрос будет идти быстрее но при большом кол-во комнат может и "тупить" это же можно отнести и к файлам.
Но еще раз повторю что файлы не лучший вареант и возни с ними больше и они не сбоеустойчевы.

Еще один вареант так это все сообщения писать в память и переодически ее чистить. Но это тоже геморный вареант и не сбоеустойчев.

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

Так же это можно отнести и к боям.

И да как уже писали используйте AJAX лучше свой но можно и Jquery или другие либы
Но не пересторайтесь с JavaScript т.к. он можит сильно вешать браузер что тоже не есть гуд и ваше игроки проста его закроют и забудут про игру
 
Полазил по инету, поискал материала, проанализировал, выбрал самое интересное и наиболее часто использующееся начинающими программистами.
1. оператор
Код:
echo
быстрее, чем
Код:
print.
print фунция perla а не php.

2. лучше сделать
Код:
$a .= $b
чем
Код:
$a = $a.$b;
тоже самое касается
Код:
$i++ ($i = $i+1;), $i += $y ($i = $i + $y).

3. никогда не используйте
Код:
mysql_num_rows count
в условиях циклов. Лучше перед циклом задайте переменную
Код:
$smth_count

4. если скрипт довольно большой, то после последнего использования переменной
Код:
$x
делайте
Код:
unset($x);
если вам нужно будет вносить правки в код и потребуется дальнейшее использование переменной
Код:
$x
то соответственно переместите
Код:
unset($x)
в новое место.

5. Не используйте функцию
Код:
require_once
Лучше проследите за тем, что бы файл не инклюдился 2й раз, чем делать инклюды такого вида.

6. В
Код:
include/require
лучше прописывать полный путь к файлу. Если вы его не знаете, можно специально допустить в скрипте ошибку и посмотреть какой путь будет написан в браузере при обработке скрипта. Данная вещь поможет быстрее искать скрипты которые вы подгружаете.

7. Если вам необходимо знать время начала обработки скрипта, лучше использовать
Код:
$_SERVER[’REQUEST_TIME’]
вместо
Код:
time().

8.
Код:
str_replace
быстрее, чем
Код:
preg_replace
, но
Код:
strtr
быстрее, чем
Код:
str_replace.

10. не стоит забывать про
Код:
elseif.
если вы делаете условия вида
Код:
if ($a==1) {} if ($a ==2){} то 1)
это требует больше времени на обработку; 2) можно допустить ошибки если случайно переназначить
Код:
$a;

11. подавление ошибок при использовании
Код:
@
работает очень медленно. здесь следует выбрать между безопасностью и работоспособность. так что выбор за вами.

12. закрывайте свои соединения с БД, когда закончите работать с ними. если каким то образом вы забудете это сделать – то при частом обращении к сприпту у вас за считанные минуты отвалится MySQL.

13.
Код:
$row['id']
быстрее чем
Код:
$row[id].
почему? потому что
Код:
$row[id]
считается ошибкой, хотя обрабатывается

14.
Код:
$row['id']
быстрее чем
Код:
$row["id"]

15. правильнее использовать
Код:
echo ‘test’.$asd.’qqq’;
чем
Код:
echo «test $asd qqq»;
и
Код:
echo «test».$asd.»qqq»;

16. не забывайте про кеширование скриптов.

17. кэшируйте, насколько это возможно. Используйте memcached — это высокопроизводительная система кэширования объектов в памяти, которая повышает скорость динамических веб-приложений за счёт облегчения загрузки БД. Кэшированный микрокод полезен тем, что позволяет вашему скрипту не компилироваться снова для каждого запроса.
18.
Код:
$i++
происходит немного медленнее, чем
Код:
++$i.

@ Автор: UnDeaD
Сделал переменные и т.д в виде кода, чтобы легко было читать...
Прикрепите пожалуйста данное сообщение сверху после сообщения Steam
 
Искал на днях основные проблымы в ИВ и прежде всего оптимизация и аутентификация, и вот что нашел основное(буду писать все включая то что уже писали):

1. Таблица players содержит всебе слишком много лишней информации, её следует разделить на несколько, следуйщим образом:
A. Часто запрашиваемые данные пользователем (статы, уровень, опыт, ник, пароль)
B. Редко запрашиваемые данные пользователем (возраст, настоящие имя, и т.д.)
С. Параметры запрашиваемые непосредственно программой (время, онлан, занят/свободен)
D. Убейтесь со своими профами и навыками в таблице players, каждую профессию и навык стоит выносить в отдельную таблицу, так как это, во-первых, удобно, во-вторых, не засаряет и так уже огромную таблицу.

2. Авторизация и аутентификация пользователя должна происходить с помощью сессий.
Подробнее:
Не надо отправлять вместе с сессией пароль!!! У каждой сессии есть уникальный идентификатор отправляемый с помощью куки(или ссылке если они отключены) клиенту. Проверка на "кто ты такой?" осуществляется следуйщим образом: При успешной авторизации пользователя, в отдельную таблицу записывается id персанажа и уникальный идентификатор сессии, при открытие пользователем страницы мы сравниваем индентификатор с информацией в базе, если он существует то далее работаем с указанным там id если нет, то отправляем на страницу авторизации.
Вы спросите какого хрена я это пишу в оптимизации? А вы подумайте, что больше будет занимать времени, проверка в таблице где все зарегистрированные пользователи, или только в тех кто онлайн?

3. Сохранение часто запрашиваемой информации
Вот при каждом обновлении страницы мы каждой раз в тысячи пользователях ищем какую-то информацию об одном единственном который нам нужен, спрашивается. а зачем? Не ужели мы не можем как-то это сделать иначе? Конечно можем, а именно:
При входе пользователя мы заносим всю часто используемую инфу в сессии и уже с ними работаем, опять же, получается что мы просматриваем только тех кто онлайн, полную базу пользователей мы затрагиваем два раза: при переносе информации в сессии и при переносе обратно, тоесть когда пользователь завершает работу с сессией. Это значительно оптимизирует весь процесс.

4. Проверки
Залезти в main.php, вы увидите там проверки на то не надо ли нас на работу перекинуть и т.п., и тоже самое присутствует в каждой локации, опять же зачем? Не понятно, правим сами, надоело объяснять))

5. Опять же про main.php

И вообще, нафига мы каждый раз перебрасываться на другую страницу, там где локация? Это мы лишний раз перезагружаем страницу, нафиг нам это не нужно, делаем инклуд на локации и правим там все как надо, зато при правильной правки мы получим локации-модули.
 
13.
Код:
$row['id']
быстрее чем
Код:
$row[id].
почему? потому что
Код:
$row[id]
считается ошибкой, хотя обрабатывается

14.
Код:
$row['id']
быстрее чем
Код:
$row["id"]
в кавычках указывается стринг, двойные с парсингом на переменную, обычные без парсинга (как есть), ежели написать без кавычек то нужно следить за тем чтоб в скрипте не была объявлена константа с соответствующим именем, о чем нас уведомляет "ошибка". Чисто для справки =]
 
да я к тому что если выводит чертзнаетчто заместь, к примеру, $stat[id] то стоит проверить константу id =Ъ ну, а варнинги/нотисы это само собой не есть гуд
 
Сверху