РЕально быстрая выборка Select из базы данных, как?

Статус
В этой теме нельзя размещать новые ответы.
Давай в скайпе пообщаемся, а то мы тут всю тему вопросами без ответов завалим.
Скинь в личку свой скайп.

Решение htmlspecialchars и обратное htmlspecialchars_decode:

return array(
"key" => preg_replace('/\$/', '$', htmlspecialchars ( "текст"дальше текст" )),
"key" => preg_replace('/\$/', '$', htmlspecialchars ( "текст$дальше текст" )),
);
 
Последнее редактирование модератором:
Решение htmlspecialchars и обратное htmlspecialchars_decode:

return array(
"key" => preg_replace('/\$/', '$', htmlspecialchars ( "текст"дальше текст" )),
"key" => preg_replace('/\$/', '$', htmlspecialchars ( "текст$дальше текст" )),
);
А глобально как то можно задать замены? К примеру при инклуде?
А то это тоже самое что поиск и замена в текстовом файле ручками
 
$arr = array(
"key" => "текст"дальше текст",
"key" => "текст$дальше текст",
);
while (list($key, $val) = each($arr)) $arr[$key] = preg_replace('/\$/', '$', htmlspecialchars ( $val ));

Хотя это не прокатит, т.к. перед заменой мы получим ошибку
Сейчас подумаю как можно сделать.
 
А если несколько замен?
while (list($key, $val) = each($arr)) {
$arr[$key] = preg_replace('/\$/', '%36', htmlspecialchars ( $val));
$arr[$key] = preg_replace('/\"/', '%34', htmlspecialchars ( $val));
$arr[$key] = preg_replace('/\{/', '%123', htmlspecialchars ( $val));
}
?
$arr=array
Т.е. вместо return присвоить всё это дело переменной?

Чтото вообще ноль((
Что не так делаю?
В поиске $b = include($bt);
код от $bt (list0.php)
Код:
<?
$b = array(
"key1" => "val{ue1",
"key2" => "value2",
"key3" => "value3",
"key4" => "value4",
"key5" => "va{lue5",
);
while (list($key, $val) = each($b)) $b[$key] = preg_replace('/{/', '%123', htmlspecialchars ( $val ));

причем если отдельно такой скрипт запустить
то всё заменяется, думаю дело в том что он инклудится целиком из list0.php в search.php $b = include($bt);
 
Последнее редактирование:
Вообщем вот такую хрень я изобрел:
Код:
function callback($buffer) {
    if (stristr($buffer, '(T_STRING)')) {
        $file = 'list'.$_SESSION['num'].'.php';
        $fix = file_get_contents($file);

        preg_match_all('/=> "(.*)",/ui', $fix, $matches);
        unset($matches[0]);
        while (list($key, $val) = each($matches[1])) {
            $fix = str_replace($val, htmlspecialchars(preg_replace('/\$/', '&dollar;', $val)), $fix);
        }
        file_put_contents($file, $fix);
        unset($fix, $matches);
    }
    return;
}

for($i = 1; $i <= 10; $i++) {
    $_SESSION['num'] = $i;
    ob_start("callback");
    $arr = include("list".$i.".php");
    unset($arr);
    ob_end_flush();
}

Вставить этот кусок кода надо до выполнения основных действий, либо вообще в отдельно перед основной процедурой.
Будем пытаться подключать файл, в случае ошибки, будем их исправлять и перезаписывать подключаемый файл.
Можно оптимизировать этот скрипт, путем поиска строк между кавычек которых имеются только определенные символы, тут я думаю у тебя проблем возникнуть не должно.
Конечно изврат, но должно работать :)
 
Последнее редактирование:
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Последнее редактирование:
Ставлю к примеру memory_limit 6000M
Вылетает к примеру на 200М пишет
Fatal error: Allowed memory size of бла бла бла

эт так понимаю в порядке вещей для денвера?
я ему плохо не будет от почти 6 гигов? ну и вопрос конечно, в том ли файле прописываете, нужно phpinfo смотреть, чтоб точно знать какое значение актуальное

Код:
memory_limit integer

    Эта директива задает максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1.

    В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: --enable-memory-limit . Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.
    Если используется integer, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ.

Несколько PHP директив могут принимать сокращения для байтовых значений в отличие от только integer байтовых значений. Каковы все доступные сокращения? И могу ли я использовать их вне php.ini?
Доступные опции: K (для килобайт), M (для мегабайт) и G (для гигабайт; доступна начиная с PHP 5.1.0); они не чувствительны к регистру. Все остальное считается байтами. 1M равно одному мегабайту или 1048576 байтам. 1K равно одному килобайту или 1024 байтам. Вы не можете использовать эти сокращения вне php.ini, вместо этого используйте целочисленные значения в байтах. Смотрите документацию по ini_get() для примеров как преобразовать эти значения.

Замечание: килобайт и кибибайт

В нотации PHP один килобайт равен 1024 байтам, тогда как стандарт IEC считает это кибибайтом. В итоге: k и K = 1024 байта.
 
я ему плохо не будет от почти 6 гигов? ну и вопрос конечно, в том ли файле прописываете, нужно phpinfo смотреть, чтоб точно знать какое значение актуальное

Код:
memory_limit integer

    Эта директива задает максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1.

    В версиях до PHP 5.2.1 для использования этой директивы, она должна была быть указана на этапе компиляции. Так, ваша строка конфигурации должна была включать: --enable-memory-limit . Эта опция компиляции была также необходима для использования функций memory_get_usage() и memory_get_peak_usage() до версии 5.2.1.
    Если используется integer, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ.

Несколько PHP директив могут принимать сокращения для байтовых значений в отличие от только integer байтовых значений. Каковы все доступные сокращения? И могу ли я использовать их вне php.ini?
Доступные опции: K (для килобайт), M (для мегабайт) и G (для гигабайт; доступна начиная с PHP 5.1.0); они не чувствительны к регистру. Все остальное считается байтами. 1M равно одному мегабайту или 1048576 байтам. 1K равно одному килобайту или 1024 байтам. Вы не можете использовать эти сокращения вне php.ini, вместо этого используйте целочисленные значения в байтах. Смотрите документацию по ini_get() для примеров как преобразовать эти значения.

Замечание: килобайт и кибибайт

В нотации PHP один килобайт равен 1024 байтам, тогда как стандарт IEC считает это кибибайтом. В итоге: k и K = 1024 байта.

Да вроде в том, файл php.ini в Денвере, ставлю к примеру memory_limit=6000M делаю рестарт, смотрю phpinfo вижу что memory_limit в таблице равен 6000M:alko:
 
Последнее редактирование:
Давай так вопрос поставим, ты скрипт выполняешь из браузера или консоли ?
Ты наверное знаешь, что php имеет разные файлы конфигурации для консоли и скажем так браузера ?
Один в папке apache2 второй в папке cli , изменения сделаны в обоих файлах конфигурации ?

Прикольненько, сейчас попробую
А то я тут уже всякими извращениями занимаюсь, оставил файл для поиска в return array
а где искать разбил на кучу файлов, и сделал просто текстовыми с разделителями, и при открытии очередной небольшой части собираю массив. ошибок не возникает

Но блин блинский фигачит мне с каждого куска кучу дублей, и соответственно кучу лишних запросов.

Если сделаю так
$mytext2=$xxx[$k].":".$k."\n";
$test=fwrite($nf, $mytext2); //пишем не найденные совпадения
unset($xxx[$k]);

$mytext1=$xxx[$k].":".$res[$k]."\n";
$test=fwrite($ff, $mytext1); //пишем найденные совпадения
unset($xxx[$k]);

Я же тебе сразу говорил, делай через массив:
Код:
// Это ставим перед началом обработки
$result = array('find'=>array(), 'not'=>array());

//Это в теле обработки
$key = md5(trim($xxx[$k]).trim($k));
$result['find'][$key] = $xxx[$k].":".$res[$k]; //пишем не найденные совпадения
$result['not'][$key] = $xxx[$k].":".$res[$k]; //аналгогично записываем ненайденные совпадения
unset($xxx[$k]);

// Это ставим после обратки
file_put_contents('path/to/file1.txt', implode("\n", $result['find']));
file_put_contents('path/to/file2.txt', implode("\n", $result['not']));
 
Последнее редактирование:
Are you connecting to database correctly? You can use mysql_fetch_array to grab row data.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху