Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2018, 19:19   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вообще-то не очевидно.
При обращении к БД основную тяжелую работу ж не РНР делает.

Ну и для самого РНР тоже есть куча оптимизаций типа PHP-FPM, HHVM, ...
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.03.2018, 19:29   #12
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

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

БД начинает тормозить, когда в них запихивают неадекват типа шаблонов страниц или фотографий, т.е. используют базу, где она не нужна и/или порождает внутренний трафик.
СтудПом вне форума Ответить с цитированием
Старый 03.03.2018, 19:45   #13
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А, ну да, быдлокод на С++ конечно лучше.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.04.2018, 15:13   #14
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от СтудПом Посмотреть сообщение
ИМХО, суть в том, что ставите неадекватную задачу.
Вам кажется, что система будет иметь недостаточную производительность?
Тогда меняйте архитектуру системы. Требовать производительности от PHP - неразумно.


и кстати-да!
В принципе, основные БД поддерживают ограниченное кэширование, достаточное, если речь идёт о частом чтении с повторяющимися запросами.

Ну зачем? ну зачем вы строите из себя великого гуру? и говорите автору такие вещи?
Поясните в чем суть неадекватности задачи? только потому что Вы не понимаете зачем оно нужно? или не понимаете как оно работает?
Столько диванных аналитиков развелось, все знают что и кто тормозит и в какой мере... знают что требовать от php а чего нельзя требовать. Вообщем я не буду писать все что я думаю по этому вопросу. но суть в том что вы не понимаете о чем пишите и какие даете советы. Вот вам самый простой не высосанный из пальца пример. Большой объем данных адский SQL запрос оптимизированный по самые коки. Выполняется 68 сек. (если сейчас аналитики диванные начнут писать что надо еще архитектуру бд менять - сообщу сразу идите лесом) ибо есть такие системы где запросы могут от нескольких часов выполняться и больше.. не суть.
Нужно строить тренд. данные обновляются 3 раза в день. Так вот выполняем запросы. кладем данные в мемкеш и рисуем графики. остальные клиенты получают готовые данные и не дергает каждый запрос по 60 сек.

Это пример такой .. его можно и по другому решить, но делали и такое.

Второе, кто нибудь видел 100 000 запросов в сек. на селект не в часы пик? и вы говорите про не адекватность задачи? да даже положив данные в мемкеш на 3 сек. вы сократите не хило нагрузку на сервер.
Будет интересно вы углубленно изучите этот вопрос, дело в вашем желании.

Автору. выдернул из сто летнего кода.

Код:
	// Если пишет "не могу подключиться" проверить службу на сервере  ps aux | grep memcached если строчка ответа одна дать команду service memcached start
	
	public function _set_memcahe($key, $data, $compress, $time)
	{	
		$memcache = new Memcache;
        $memcache->connect('localhost', 11211) or die ("Не могу подключиться");
		$memcache->set($key, $data, $compress, $time) or die ("Ошибка при сохранении данных на сервере");
	}
	
	public function _get_memcahe($key)
	{
		$memcache = new Memcache;
        $memcache->connect('localhost', 11211) or die ("Не могу подключиться");
		return $memcache->get($key);
	}	
	
	public function _unset_memcahe($key)
	{
		$memcache = new Memcache;
        $memcache->connect('localhost', 11211) or die ("Не могу подключиться");
		return $memcache->delete($key);
	}
использовать типа того

Цитата:
if(empty($this->_get_memcahe('_PDR_TABLE')))
{

$data["pdr"] = $this->pdr->_get_pdr_table($y_param, $w_param, $d_param, $this->l_year);
$this->_set_memcahe('_PDR_TABLE', $data["pdr"], MEMCACHE_COMPRESSED, 30000);
}
else
{
$data["pdr"] = $this-_get_memcahe('_PDR_TABLE');
}
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 06.04.2018, 15:19   #15
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

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

БД начинает тормозить, когда в них запихивают неадекват типа шаблонов страниц или фотографий, т.е. используют базу, где она не нужна и/или порождает внутренний трафик.
Пруфы есть? нужно сомтреть конкретный сервис и конкретные скрипты. быдлокод так же включает в себя обращения к БД где нужно и не нужно, а так же в цикле который может быть до 100000 тыс итераций а в нутри тупо INSERT вместо конкатенации и составление одно sql запроса. я не знаю примеров больше, ибо нагрузить пыху быдло кодом без БД это надо постараться, даже если будете писать индусский код.

Так же много времени уходит на обращение к БД -> ожиданию -> получению ответа. умножьте это на кол-во запросов в вашем коде получите время выполнения. а теперь представьте что избавились от этой прокладки. и берете данные прям из памяти. понимаете суть?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 06.04.2018, 15:22   #16
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
Необходимо один раз с бд получить данные, сделав массив ключ значение(небольшой порядко 200 элементов), и далее обращаться к этому массиву с множества копий скриптов, не обращаясь к бд, а обращаясь к тому массиву который в памяти оперативной. Можно ли так сделать, если да то куда рыть?

memcache или memcached или куда рыть чтобы правильно было?

php7

Если только ключ / значения то можно и редис как писали выше. можно и мемкеш. в случаи если поставите мемкеш. в будущем сможете хранить не только ключ / значения но и другую не нужную инфомрацию
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка оперативной памяти Den_Dodge Помощь студентам 2 14.04.2016 17:20
Задача-найти объем оперативной памяти по шестнадцатеричному адресу последнего байта оперативной памяти Ksana Alex Помощь студентам 4 14.11.2013 15:51
Считывание из оперативной памяти niki2012 Общие вопросы Delphi 7 05.01.2011 18:32
Объём оперативной памяти _-Re@l-_ Общие вопросы Delphi 2 16.06.2010 12:58
Текстирование оперативной памяти arxipmen Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 23.11.2007 14:30