Mysql+PHP оптимальные конструкции

12
MVH
На сайте с 03.05.2005
Offline
64
MVH
#11
Segey:
А можно как-то измерить? Т.е. создать условия, что 100.000 пользователей обращаются к файлу с запросом к базе и им выдается результат, а в итоге написано, что все эти операции заняли столько-то времени?

А зачем делать, что бы тысяча пользователей-то обращалось? Для каждого из них просто будет запущен отдельный процесс скрипта. Просто замерьте скорость работы одного скрипта и другого и посмотрите кто быстрее.

Как это сделать посмотрите здесь:

http://ru.php.net/manual/ru/function.microtime.php - там есть пример использования.

GB
На сайте с 22.04.2006
Offline
2
#12
Segey:
Согласен, что проще управлять через БД, но если у меня очень много обращений к БД к маленькой тацлице, как в примере, которая по сути массив (т.к. небольшой список). Собственно вопрос, стоит ли заморачиваться тут и такие моменты делать файлами или нагрузка на БД при этом будет не такая большая?

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

bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#13

Segey, если стоит задача максимально оптимизировать время работы скрипта, то лучший вариант - хранить небольшие объемы данных в файлах в виде массивов и подключать их инклюдом. Например:

<?

$chars = array ('а', 'б', 'в', 'г', 'д', 'е', 'е', 'ж', 'з', 'и'); // и т.д.
?>

Таким образом, на парсинг файла будет тратиться мимнимум времени - ведь этим занимается не PHP скрипт (PHP, как любой другой интерпретируемый язык высокого уровня, весьма медлителен), а непосредственно PHP интерпретатор, написанный на C, и потому более шустрый.

Несложно написать функцию (библиотеку) для сохранения любых (сколь угодно мерных) массивов в виде PHP кода. У меня такая библиотека написана, и я ее активно использую. Вот ее код:

<?


/*
Полезнейшая библиотечка для сохранения различных переменных в PHP файлах.
Эти функции принимают в параметре переменную, и выдают строку - именно
так эта переменная должна сохраняться в PHP файле, чтобы его можно было
смело инклюдить.
*/

if (!defined('TAB')) {
define('TAB', ' ');
}

function save_scal($v) {
if (is_numeric($v)) {
return $v;
} else {
return "'" . str_replace('\'', '\\\'', str_replace('\\', '\\\\', $v)) . "'";
}
}

function save_array($arr, $space = '') {
$ret = "array (";
$sep = "\n$space" . TAB;
foreach($arr as $k=>$v) {
if (!is_array($v)) {
$ret .= $sep . save_scal($k) . ' => ' . save_scal($v);
} else {
$ret .= $sep . save_scal($k) . ' => ' . save_array($v, $space . TAB);
}
$sep = ",\n$space" . TAB;
}
$ret .= "\n$space)";
return $ret;
}

function save($var) {
if (is_array($var)) {
return save_array($var);
} else {
return save_scal($var);
}
}
?>

Для сохранения переменной в файл используется примерно такой код:

<?

include_once(LIB . 'save.php'); // та самая библиотека
$file = fopen(ETC . 'config.php', 'w');
fwrite($file, "<?\n\$config = " . save($config) . ";\n?>");
fclose($file);
?>

Что касается больших и обильно связанных между собой данных, тут безусмловно нужно использовать БД.

bondarevpipes.com (http://ru.bondarevpipes.com/)
MVH
На сайте с 03.05.2005
Offline
64
MVH
#14
bondarev.pp.ru:
Несложно написать функцию (библиотеку) для сохранения любых (сколь угодно мерных) массивов в виде PHP кода. У меня такая библиотека написана, и я ее активно использую. Вот ее код:

Только лучше не изобретать велосипед, а использовать встроенную ф-ю var_export(). Ей даже объекты можно скармливать...

bondarev.pp.ru
На сайте с 29.09.2005
Offline
202
#15

MVH, век живи - век учись :) Когда я начинал работать с PHP (лет 6 назад) этой функции в стпарочниках не было. Пришлось искать свои решения.

MVH
На сайте с 03.05.2005
Offline
64
MVH
#16
bondarev.pp.ru:
MVH, век живи - век учись Когда я начинал работать с PHP (лет 6 назад) этой функции в стпарочниках не было. Пришлось искать свои решения.

За этим прогрессом хрен угонишься. :)

Segey
На сайте с 23.08.2005
Offline
404
#17
MVH:
За этим прогрессом хрен угонишься.

Так зачем за ним гнаться, просто неторопясь следовать, по необходимости :)

Знать бы точно что решает конкретные задачи наиболее эфективно

Я сейчас учусь php и мне такое писать нет никакого желания, если функция есть. Хотя кто знает, может быть и я потом не смогу угнаться за прогрессом... как говорится - учи инглиш 😒

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
[Удален]
#18

Segey, просто запишите массив или временную таблицу, с которой и будете работать. Дальше апач разберется.

Раньше ( по слухам) наши ребята загоняли во временные таблицы даже результаты поиска. И ничего, работало быстро. Тем более, что у Вас только буквы.

Если хотите, пришлите в личку Ваше задание, я посоветуюсь с ребятами.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий