Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчитываем кол-во запросов к БД, И время 
:(
    Опции темы
CyClon
Дата 7.2.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Код
<?php

function sql_query($query) {
    global $sql_time, $sql_num;
    $mtime = explode(" ", microtime());
    $start = $mtime[1] + $mtime[0];
    mysql_query($query);
    $mtime = explode(" ", microtime());
    $end = $mtime[1] + $mtime[0];
    $sql_time[] = $end - $start;
    $sql_num++;
}

$sql_time['total'] = substr(($sql_time['total']), 0, 5);

?>


Вот то что смог сделать. Теперь вопросы:

1. Как сложить все значения массива. То есть я получу массив с несколькими значениями, типа $sql_time[0], $sql_time[1] и т.д. Мне нужно сложить все значения. Как сделать? Или есть более быстрый вариант?
2. Стоит ли использовать данную функцию или лучше использовать готовый класс.
3. Преимущества класса
4. Преимущества этой функции
5. Ваши предложения по осуществлению этого черного плана smile


--------------------
user posted image
PM   Вверх
Mal Hack
Дата 7.2.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Вместо substr лучше заюзать sprintf
Что касается функции, то ей вполне можно пользоваться.

array_sum
PM ICQ   Вверх
CyClon
Дата 7.2.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Забыл задать вопрос:

1. Что быстрее - эта функция или класс?

И хотелось бы все-таки услышать ответы по поводу преимуществ класса.
Добавлено @ 19:31
А если сделать так:

Код
<?php

function sql_query($query) {
    global $sql_start, $sql_end, $sql_num;
    $mtime = explode(" ", microtime());
    $sql_start[] = $mtime[1] + $mtime[0];
    mysql_query($query);
    $mtime = explode(" ", microtime());
    $sql_end[] = $mtime[1] + $mtime[0];
    $sql_num++;
}

    $sql_time = array_sum($sql_end) - array_sum($sql_start);
    $sql_time = sprintf($sql_time, 0, 5);

?>


Я так понимаю, что данный код более оптимальный. Как вы считаете?


--------------------
user posted image
PM   Вверх
Mal Hack
Дата 7.2.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(CyClon @ 7.2.2006, 19:20 Найти цитируемый пост)

1. Что быстрее - эта функция или класс?


А это уже как реалиуешь.


Почитай про область видимости переменных.
PM ICQ   Вверх
CyClon
Дата 7.2.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Почитаю. А если кратко? Получается второй вариант не будет быстрее первого? Mal Hack, посоветуйsmile Просто хочу определится с этой функцией, а потом читать ужеsmile Ну, а дальше видно будет ;)


--------------------
user posted image
PM   Вверх
Mal Hack
Дата 7.2.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Если ты пишешь свой интерфейс для работы с БД, то, конечно, лучше будет эту функцию завязать с классом, если нет, то тогда нафиг ее...
По сути, эти две операции лишние, и создают лишнюю нагрузку на скрипт.
PM ICQ   Вверх
CyClon
Дата 7.2.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Mal Hack, я с классами работать не умею вообще. В качестве коннекта к БД использую pconnect и mysql_select_db - две строки.
В общем, две операции - это в первом варанте? Или ты о $mtime = explode(" ", microtime()); ?


--------------------
user posted image
PM   Вверх
wsr
Дата 8.2.2006, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: 1
Всего: 2



Код

class SQL {

      var $queries       = 0;          # Количество запросов к базе данных

      function query ( $query ) {
               $result = mysql_query ( $query, $this->sql_id );
               $this->queries++;
               return $result;
      }
}
$sql = new SQL;
$sql->query ( "SELECT ..." );

Ну и все в таком духе. как видишь все реализовано через Класс.
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
CyClon
Дата 8.2.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Хм... Вроде бы все просто. Ну может все-таки кто подскажет что юзать, как и сколькоsmile


--------------------
user posted image
PM   Вверх
RomanK
Дата 8.2.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 25.6.2005
Где: Россия, Выборг

Репутация: 1
Всего: 2



wsr,
ИМХО, это лучше реализовать через статические методы тогда. Конечно если PHP5. smile

Код
<?php
class Sql
{
    static private $queryes=0;

    static public function Query($query)
    {
        self::$queryes++;
        return mysql_query($query);
    }

    static public function GetQueryes()
    {
        return self::$queryes;
    }
}

$sql=Sql::Query('SELECT * FROM table WHERE 1;');
echo Sql::GetQueryes();
?>

Как бы даже не то что лучше, а удобнее в ДАННОМ случае.

Это сообщение отредактировал(а) RomanK - 9.2.2006, 20:56
PM MAIL WWW ICQ   Вверх
CyClon
Дата 9.2.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Код
<?php 

$db['host'] = "localhost"; // Хост 
$db['uname'] = "root"; // Имя пользователя 
$db['password'] = ""; // Пароль 
$db['name'] = "slaed"; // Название БД 

$global['sql_count'] = 1; // Активизируем подсчет времени 

$sql_time = 0; 
$queries = 0; 

function sql_connect() { 
    global $db; 
    mysql_pconnect($db['host'], $db['uname'], $db['password']); 
    mysql_select_db($db['name']); 
} 

function sql_query($query) { 
    global $global, $sql_time, $queries; 
    if ($global['sql_count'] == 1) { 
        $mtime = explode(" ", microtime()); 
        $go = $mtime[1] + $mtime[0]; 
        mysql_query($query); 
        $mtime = explode(" ", microtime()); 
        $end = $mtime[1] + $mtime[0]; 
        $sql_time = $sql_time + round(($end - $go), 5); 
        $queries++; 
    } else { 
        mysql_query($query); 
    } 
} 

// Тест 

sql_connect(); 

sql_query("SELECT `cid` FROM `slaed_files` WHERE `title` = '123'"); 
sql_query("SELECT `cid` FROM `slaed_files` WHERE `title` = 'Название'"); 

echo "Затраченное время: ".$sql_time." сек.<br />\nЗапросов к БД: ".$queries; // Выводит ~0.00085 и 2 

?>


Вот значит что я наварганил. Если увидели где-то неоптимальный код и знаете решение - оптишитесь пожалуйста. Кстати, может дествительно в класс как-то все засунуть?


--------------------
user posted image
PM   Вверх
RomanK
Дата 9.2.2006, 18:46 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 25.6.2005
Где: Россия, Выборг

Репутация: 1
Всего: 2



CyClon тебе уже два человека написали как тебе это в класс можно засунуть. [Добавить время выполнения Sql запроса думаю не составит большого труда. (По аналогии)] Выбирай. smile
PM MAIL WWW ICQ   Вверх
wsr
Дата 9.2.2006, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: 1
Всего: 2



RomanK имхо наши с тобой варианты хороши для разных версий php. Просто у меня у самого стоит на компе PHP4, поэтому и пишу я все скрипты под четвертую версию.
А вообще нормал.
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
CyClon
Дата 9.2.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 3
Всего: 4



Просто я не хочу пихать все в класс, т.к. не вижу никаких преимуществ. А вообще если буду пихать, то в вариант wsr, просто сам юзаю 4 PHP, да и понятнее как-то все ;)


--------------------
user posted image
PM   Вверх
RomanK
Дата 10.2.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 25.6.2005
Где: Россия, Выборг

Репутация: 1
Всего: 2



Цитата(CyClon @ 9.2.2006, 21:58 Найти цитируемый пост)

т.к. не вижу никаких преимуществ

Преимущества только в том, что будет удобнее, ИМХО. Хотя это как сказать... У всех свои предпочтения и вкусы. smile
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0734 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.