Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скорость ответа php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kolyan9898
Отправлено: 12 Апреля, 2015 - 21:03:29
Post Id


Гость


Покинул форум
Сообщений всего: 127
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




Ребят, помогите сделать код быстрее!! Я его писал лишь бы работало, но теперь нужно сделать быстрее по выполнению!
Часть функции, один кейз
Это рейтинг игроков в клане.
PHP:
скопировать код в буфер обмена
  1.  
  2. swith($func){
  3. case "GetPlayer":
  4.  $tip = $_POST[tip];
  5.  $res = mysql_query("SELECT * FROM `users` WHERE `uid` = '$id' AND `auth` = '$key'");
  6.  $num = mysql_num_rows($res);
  7.  
  8.  if($num == 0) {
  9.  echo "[ff0000]Ошибка![-] Такой игрок не существует.";
  10. }else{
  11. $userinfo=mysql_fetch_assoc($res);
  12. $clanid= ''.$userinfo["clan"].'';
  13. $sort1="";
  14. $sort2="";
  15. switch ($tip)
  16. {
  17.   case 0:
  18. $sort1= "ORDER BY `level` DESC";
  19.     break;
  20.   case 1:
  21. $sort2= "ORDER BY `kill` DESC";
  22.     break;
  23.   case 2:
  24. $sort2= "ORDER BY `death` DESC";  
  25.     break;
  26.   case 3:
  27. $sort2= "ORDER BY (`kill`-`death`)/`kill` DESC";
  28.     break;
  29.   default:
  30.    $sort1= "ORDER BY `level` DESC";
  31.     break;
  32. }
  33. $query = "SELECT  * FROM `clans_users` WHERE `clan`='$clanid' $sort2";
  34. $res = mysql_query($query);
  35. $skull = array();
  36. $kill = array();
  37. $death = array();
  38. $level = array();
  39. $login = array();
  40. $i=0;
  41. while ($clanplayer = mysql_fetch_array($res)) // цикл сборки json
  42. {
  43. $i++;
  44. $res1 = mysql_query("SELECT `login`,`level` FROM `users` WHERE `uid`='$clanplayer[1]' $sort1");
  45. $users=mysql_fetch_array($res1);
  46. if($clanplayer[4]== 0){
  47. $skull1=0;
  48. }else
  49. if($clanplayer[4]== 0 && $clanplayer[5]== 0){
  50. $skull1=0;
  51. }else{
  52. $skull1=($clanplayer[4]-$clanplayer[5])/$clanplayer[4];
  53. }
  54. $skull["skull".$i] = $skull1;
  55. $kill["kill".$i] = $clanplayer[4];
  56. $death["death".$i] = $clanplayer[5];
  57. $login["login".$i] = $users[0];
  58. $level["level".$i] = $users[1];
  59. }
  60. $login["count"] = count($login);
  61. $d = array_merge($skull, $kill, $death, $login, $level);
  62. echo json_encode($d);
  63. }
  64.     break;
  65. }
  66.  
 
 Top
mega94
Отправлено: 13 Апреля, 2015 - 08:37:52
Post Id



Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Сент. 2014  


Помог: 0 раз(а)

[+][+]


kolyan9898 пишет:
Ребят, помогите сделать код быстрее!! Я его писал лишь бы работало, но теперь нужно сделать быстрее по выполнению!
Часть функции, один кейз
Это рейтинг игроков в клане.
PHP:
скопировать код в буфер обмена
  1.  
  2. swith($func){
  3. case "GetPlayer":
  4.  $tip = $_POST[tip];
  5.  $res = mysql_query("SELECT * FROM `users` WHERE `uid` = '$id' AND `auth` = '$key'");
  6.  $num = mysql_num_rows($res);
  7.  
  8.  if($num == 0) {
  9.  echo "[ff0000]Ошибка![-] Такой игрок не существует.";
  10. }else{
  11. $userinfo=mysql_fetch_assoc($res);
  12. $clanid= ''.$userinfo["clan"].'';
  13. $sort1="";
  14. $sort2="";
  15. switch ($tip)
  16. {
  17.   case 0:
  18. $sort1= "ORDER BY `level` DESC";
  19.     break;
  20.   case 1:
  21. $sort2= "ORDER BY `kill` DESC";
  22.     break;
  23.   case 2:
  24. $sort2= "ORDER BY `death` DESC";  
  25.     break;
  26.   case 3:
  27. $sort2= "ORDER BY (`kill`-`death`)/`kill` DESC";
  28.     break;
  29.   default:
  30.    $sort1= "ORDER BY `level` DESC";
  31.     break;
  32. }
  33. $query = "SELECT  * FROM `clans_users` WHERE `clan`='$clanid' $sort2";
  34. $res = mysql_query($query);
  35. $skull = array();
  36. $kill = array();
  37. $death = array();
  38. $level = array();
  39. $login = array();
  40. $i=0;
  41. while ($clanplayer = mysql_fetch_array($res)) // цикл сборки json
  42. {
  43. $i++;
  44. $res1 = mysql_query("SELECT `login`,`level` FROM `users` WHERE `uid`='$clanplayer[1]' $sort1");
  45. $users=mysql_fetch_array($res1);
  46. if($clanplayer[4]== 0){
  47. $skull1=0;
  48. }else
  49. if($clanplayer[4]== 0 && $clanplayer[5]== 0){
  50. $skull1=0;
  51. }else{
  52. $skull1=($clanplayer[4]-$clanplayer[5])/$clanplayer[4];
  53. }
  54. $skull["skull".$i] = $skull1;
  55. $kill["kill".$i] = $clanplayer[4];
  56. $death["death".$i] = $clanplayer[5];
  57. $login["login".$i] = $users[0];
  58. $level["level".$i] = $users[1];
  59. }
  60. $login["count"] = count($login);
  61. $d = array_merge($skull, $kill, $death, $login, $level);
  62. echo json_encode($d);
  63. }
  64.     break;
  65. }
  66.  

По пробуйте использовать не цикл while а foreach

Результаты эксперимента:
Прохождение первый раз
FOR->-0.977589
FOREACH->0.017745
WHILE->2.9999999999995E-6
DO WHILE->4.9999999999981E-6
Прохождение второй раз
FOR->0.022453
FOREACH->0.017631
WHILE->2.9999999999752E-6
DO WHILE->5.0000000000328E-6
Прохождение третий раз
FOR->0.022672
FOREACH->0.01771
WHILE->3.000000000003E-6
DO WHILE->4.000000000004E-6
 
 Top
kolyan9898
Отправлено: 13 Апреля, 2015 - 13:07:56
Post Id


Гость


Покинул форум
Сообщений всего: 127
Дата рег-ции: Июль 2012  


Помог: 0 раз(а)




не получается в foreach преобразовать
(Добавление)
С каждым вызовом скрипта этой функции падает скорость последующих выполнений. и так до зависания...
 
 Top
OrmaJever Модератор
Отправлено: 13 Апреля, 2015 - 15:15:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




во-первых нужно переписывать весь код если вы хотите добиться производительности, во-вторых оптимизировать таблицу(ы) в бд, от этого очень многое зависит


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
ponchic
Отправлено: 15 Апреля, 2015 - 14:10:30
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Март 2015  


Помог: 0 раз(а)

[+]


kolyan9898 пишет:
Ребят, помогите сделать код быстрее!! Я его писал лишь бы работало, но теперь нужно сделать быстрее по выполнению!
Часть функции, один кейз
Это рейтинг игроков в клане.
PHP:
скопировать код в буфер обмена
  1.  
  2. swith($func){
  3. case "GetPlayer":
  4.  $tip = $_POST[tip];
  5.  $res = mysql_query("SELECT * FROM `users` WHERE `uid` = '$id' AND `auth` = '$key'");
  6.  $num = mysql_num_rows($res);
  7.  
  8.  if($num == 0) {
  9.  echo "[ff0000]Ошибка![-] Такой игрок не существует.";
  10. }else{
  11. $userinfo=mysql_fetch_assoc($res);
  12. $clanid= ''.$userinfo["clan"].'';
  13. $sort1="";
  14. $sort2="";
  15. switch ($tip)
  16. {
  17.   case 0:
  18. $sort1= "ORDER BY `level` DESC";
  19.     break;
  20.   case 1:
  21. $sort2= "ORDER BY `kill` DESC";
  22.     break;
  23.   case 2:
  24. $sort2= "ORDER BY `death` DESC";  
  25.     break;
  26.   case 3:
  27. $sort2= "ORDER BY (`kill`-`death`)/`kill` DESC";
  28.     break;
  29.   default:
  30.    $sort1= "ORDER BY `level` DESC";
  31.     break;
  32. }
  33. $query = "SELECT  * FROM `clans_users` WHERE `clan`='$clanid' $sort2";
  34. $res = mysql_query($query);
  35. $skull = array();
  36. $kill = array();
  37. $death = array();
  38. $level = array();
  39. $login = array();
  40. $i=0;
  41. while ($clanplayer = mysql_fetch_array($res)) // цикл сборки json
  42. {
  43. $i++;
  44. $res1 = mysql_query("SELECT `login`,`level` FROM `users` WHERE `uid`='$clanplayer[1]' $sort1");
  45. $users=mysql_fetch_array($res1);
  46. if($clanplayer[4]== 0){
  47. $skull1=0;
  48. }else
  49. if($clanplayer[4]== 0 && $clanplayer[5]== 0){
  50. $skull1=0;
  51. }else{
  52. $skull1=($clanplayer[4]-$clanplayer[5])/$clanplayer[4];
  53. }
  54. $skull["skull".$i] = $skull1;
  55. $kill["kill".$i] = $clanplayer[4];
  56. $death["death".$i] = $clanplayer[5];
  57. $login["login".$i] = $users[0];
  58. $level["level".$i] = $users[1];
  59. }
  60. $login["count"] = count($login);
  61. $d = array_merge($skull, $kill, $death, $login, $level);
  62. echo json_encode($d);
  63. }
  64.     break;
  65. }
  66.  

Заказать нормальный сервер.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB