[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите оптимизировать простенький код
mike1982
Здравствуйте,
есть такой код в начале шаблона сайта, он вроде бы как мне кажется грузит хостинг:

<?php
$db = mysql_connect("localhost","admin","1234567");
mysql_select_db("baza_1234",$db);
if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) !== false )
{
mysql_query ("UPDATE jos_modules SET published = '1' WHERE id = '85'");
}
else
{
mysql_query ("UPDATE jos_modules SET published = '0' WHERE id = '85'"); [i](Вот это действие можно сделать что бы оно срабатывало только 1 раз после срабатывания предыдущего действий, не обязательно что бы оно срабатывало каждый раз, но только после захода другого юзер агента.)[/i]
}
if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) !== false )
{
mysql_query ("UPDATE jos_modules SET published = '1' WHERE id = '92'");
}
else
{
mysql_query ("UPDATE jos_modules SET published = '0' WHERE id = '92'"); [i](Аналогично и это действие.)[/i]
}
mysql_close($db);
?>


Можно его как нибудь оптимизировать что бы не грузил хост? Если не затруднит, подскажите сразу подправленный код) Почему грузит сервак?
Спасибо за помощь))



Спустя 49 минут, 55 секунд (29.04.2011 - 14:08) Metatron написал(а):
по поводу оптимизации.. Я выскажусь..

1. При создании запросов к БД все поля лучше возводить в тильды апострофы и желательно прописывать адрес таблицы. Пример: UPDATE `jos_modules` SET `published` = '1' WHERE `id` = '85' . и тогда будет работать быстрее...

2. Воздержитесь от использование двойных кавычек.. Ибо в них определяются дополнительные символы и туда можно совать переменные. Так что они тоже действуют на память. Пример: $db = mysql_connect('localhost','admin','1234567');

Ну и ещё некоторые функции обрабатывают строки медленно очень.. Если они очень большие.

PS.. А зачем проверять браузеры?

Спустя 11 минут, 57 секунд (29.04.2011 - 14:20) Игорь_Vasinsky написал(а):
Metatron
тильды, это помоимо ~, а - ` вродебы апостроф...

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

Спустя 11 минут, 34 секунды (29.04.2011 - 14:31) mike1982 написал(а):
Цитата (Metatron @ 29.04.2011 - 11:08)
по поводу оптимизации.. Я выскажусь..

1. При создании запросов к БД все поля лучше возводить в тильды и желательно прописывать адрес таблицы. Пример: UPDATE `jos_modules` SET `published` = '1' WHERE `id` = '85' . и тогда будет работать быстрее...

2. Воздержитесь от использование двойных кавычек.. Ибо в них определяются дополнительные символы и туда можно совать переменные. Так что они тоже действуют на память. Пример: $db = mysql_connect('localhost','admin','1234567');

Ну и ещё некоторые функции обрабатывают строки медленно очень.. Если они очень большие.

PS.. А зачем проверять браузеры?

Спасибо, но на счет тильд не совсем понял, ~ это вроде тильда.

Попробую с одинарными кавычками.

Просто нужно чтобы разная инфа высвечивалась в зависимости от браузера.

Спустя 4 минуты, 35 секунд (29.04.2011 - 14:36) Игорь_Vasinsky написал(а):
mike1982
Цитата
Попробую с одинарными кавычками


речь шла об апострофах - `

Спустя 5 минут, 21 секунда (29.04.2011 - 14:41) mike1982 написал(а):
Цитата (Игорь_Vasinsky @ 29.04.2011 - 11:20)
Metatron
а по поводу оптимизации: у тя перезапись для каждого захода на страничку, т.е. не важно - еслиодин и тот же юзер обновит страницу - то всё равно перезапись, а ты сделай чтоб условие срабатывало 1 раз в день для каждого юзера, например при помощи куки.

Верно, мне как раз таки и нужно что бы действие else выполнялось только 1 раз при первом заходе любого другого юзер агента (либо в конце шаблона и только 1 раз), но не средствами куки, так как для следущих отличающихся от firefox агентов, это действие каждый раз уже не нужно выполнять пока снова не зайдет firefox. Но как это воплотить в скрипте моих знаний не достаточно((

Спустя 4 минуты, 56 секунд (29.04.2011 - 14:46) Metatron написал(а):
Цитата (mike1982 @ 29.04.2011 - 15:41)
Цитата (Игорь_Vasinsky @ 29.04.2011 - 11:20)
Metatron
а по поводу оптимизации: у тя перезапись для каждого захода на страничку, т.е. не важно - еслиодин и тот же юзер обновит страницу - то всё равно перезапись, а ты сделай чтоб условие срабатывало 1 раз в день для каждого юзера, например при помощи куки.

Верно, мне как раз таки и нужно что бы действие else выполнялось только 1 раз при первом заходе любого другого юзер агента (либо в конце шаблона и только 1 раз), но не средствами куки, так как для следущих отличающихся от firefox агентов, это действие каждый раз уже не нужно выполнять пока снова не зайдет firefox. Но как это воплотить в скрипте моих знаний не достаточно((

сделай через сессию

и не придётся делать проверку)

либо пиши в базу инфу о том какой браузер. так тоже можно делать. хотя это тоже дополнительная нагрузка.

Спустя 10 минут, 50 секунд (29.04.2011 - 14:57) mike1982 написал(а):
Написал такой код:
<?php
$db = mysql_connect('localhost','admin','1234567');
mysql_select_db('baza_1234',$db);
if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) !== false )
{
mysql_query (UPDATE `jos_modules` SET `published` = '1' WHERE `id` = '85');
}
else
{
mysql_query (UPDATE `jos_modules` SET `published` = '0' WHERE `id` = '85'); это можно сделать что бы только 1 раз выполнялось после захода агента firefox а не каждый раз
}
if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) !== false )
{
mysql_query (UPDATE `jos_modules` SET `published` = '1' WHERE `id` = '92');
}
else
{
mysql_query (UPDATE `jos_modules` SET `published` = '0' WHERE `id` = '92');
}
mysql_close($db);
?>
Теперь вообще страница не открывается, где ошибка???

а через сессию я никогда ничего не делал, вообще не представляю как((

Спустя 6 минут, 57 секунд (29.04.2011 - 15:04) Metatron написал(а):
Цитата (mike1982 @ 29.04.2011 - 15:57)
Написал такой код:
<?php
$db = mysql_connect('localhost','admin','1234567');
mysql_select_db('baza_1234',$db);
if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Firefox' ) !== false )
{
mysql_query (UPDATE `jos_modules` SET `published` = '1' WHERE `id` = '85');
}
else
{
mysql_query (UPDATE `jos_modules` SET `published` = '0' WHERE `id` = '85');
}
if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Opera' ) !== false )
{
mysql_query (UPDATE `jos_modules` SET `published` = '1' WHERE `id` = '92');
}
else
{
mysql_query (UPDATE `jos_modules` SET `published` = '0' WHERE `id` = '92');
}
mysql_close($db);
?>
Теперь вообще страница не открывается, где ошибка???

а через сессию я никогда ничего не делал, вообще не представляю как((

возьми запросы в кавычки)))

mysql_query ("UPDATE `jos_modules` SET `published` = '0' WHERE `id` = '85'");

Спустя 16 минут, 11 секунд (29.04.2011 - 15:20) mike1982 написал(а):
Спасибо за помощь вам!

Может еще можно как нибудь попроще код???:
mysql_query (UPDATE `jos_modules` SET `published` = '0' WHERE `id` = '85');
это можно сделать что бы только 1 раз выполнялось после захода агента firefox а не каждый раз.

Спустя 2 часа, 32 минуты, 34 секунды (29.04.2011 - 17:53) mike1982 написал(а):
Цитата (Metatron @ 29.04.2011 - 12:04)
возьми запросы в кавычки)))

mysql_query ("UPDATE `jos_modules` SET `published` = '0' WHERE `id` = '85'");

насколько меньше будет нагрузка после таких изменений???

Спустя 1 час, 58 минут, 17 секунд (29.04.2011 - 19:51) liw написал(а):
Зависит от размеров базы/железа/частоты заходов - ну в общем от всего)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.