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

Статус
В этой теме нельзя размещать новые ответы.
Увеличьте доступную память для скрипта. Массив хранить в файле в таком виде
PHP:
$array = array(
'a'=>'b',
'c'=>'d');
На счет ГБ. В примере вы указали что будет около 200 тысяч записей, а это ну ни как на гигабайты не тянет.
Хотя можно попытаться и уменьшить массив, использу как ключт не текст, а его хеш.
 
Последнее редактирование:
Можно немного поподробней про это?
Не будет ли жестко подгружать 8гб тхт файл в массив и юзать по нему поиск из 200мб тхт?


Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 134217728 bytes) in

Эт я только 180мб файл подключил***((((
нужно файл читать поблочно (скажем n строк за итерацию) а не целый
что-то например
Код:
$handle = fopen("/tmp/uploadfile.txt", "r") or die("Couldn't get handle");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        // Process buffer here..
    }
    fclose($handle);
}
 
Увеличьте доступную память для скрипта. Массив хранить в файле в таком виде
PHP:
$array = array(
'a'=>'b',
'c'=>'d');
На счет ГБ. В примере вы указали что будет около 200 тысяч записей, а это ну ни как на гигабайты не тянет.
Хотя можно попытаться и уменьшить массив, использу как ключт не текст, а его хеш.

200к - 200.000
200кк - 200.000.000

Сколько можно максимально памяти предоставлять?

потом как понимаю подключаем 2 массива, и foreach сравниваем, если есть совпадение, тогда выводим, верно?
 
Столько сколько у вас оперативки.

А не много будет? я бы взял две трити, но никак не всю оперативку. В крайнем случае, если это свой сервер, докинуть немного. У меня для работы с такими объемами специальный сервак, где как раз куча оператвы стоит. Обычный хостинговый 100% загнеться
 
А не много будет? я бы взял две трити, но никак не всю оперативку. В крайнем случае, если это свой сервер, докинуть немного. У меня для работы с такими объемами специальный сервак, где как раз куча оператвы стоит. Обычный хостинговый 100% загнеться
Для таких целей использую локалку(Denwer), а то хостеры ныть будут)

8гб нормально будет выставить?
16gb ddr3
AMD a10-5800k

В принципе 200мб в массив загналось за 6 сек, сейчас посмотрим что с остальными
потом как понимаю подключаем 2 массива, и foreach сравниваем, если есть совпадение, тогда выводим, верно?
 
Считывайте данные частями, прочитали 100Мб скинули в кэш и т.д., вашим путем вам никакой памяти не хватит.
Из последних ответов, я делаю вывод, вы пытаетесь решить свою проблему путем увеличения ресурсов, это быстрое решение, но неправильное.

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

в общем, перенес кусок для теста из бд в ассоциативные массивы.
Скорость супер, по сравнению с 70 запросами в секунду 300мб данных обрабатываются за 30 сек

Вот только новая беда:)
в массиве попадаются символы типа ",$,{
пхп на них матерится когда инклуд делаю массивам из txt
как им до инклуда replace сделать?
$ на %36
" на %34
и т.д.
потом в 1 найденном файле автозамену сделать обратно секундное дело

Только не предлагайте ручками в сформированных архивах через текстовый редактор:D
А то я уже файлы порезал на мелкие массивы и в цикл поставил чтобы память не убивать.
 
Можно пример файла, а то я немного не понимаю о чем речь.
Ну и параллельный вопрос, данные в файл как попадают ?
 
в файл записью
$ff = fopen("found.txt", "a");

если совпадение
$mytext1=$a[$k].":".$b[$k]."\n";
$test = fwrite($ff, $mytext1);

Пишется все гуд, вот только попадаются иногда символы которые не хочет кушать
Parse error: syntax error, unexpected T_STRING, expecting ')' in X:\home\test1.ru\www\list0.php on line 410880
в данном случае в $value встречается символ "
в таких местах
return array(
"key" => "текст"дальше текст",
"key" => "текст$дальше текст",
);
и еще пару символов выбивало, надо поглядеть

 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху