- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте. Извините, за нубский вопрос.
Уровень знаний в этой области у меня низкий (как мне сказал один товарищ в другой ветке).
Но вынужден просить у вас помощи и прошу вас подсказать мне
вываливается такая ошибка
49я строка некоего php файла, который делает следующее.
Есть tabliza1 с 70 полями и 30000 строк.
Проблема началась, когда я попробовал взять данные с 30ти полей.
Пока брал только с 15ти полей, все было гут.
А что подсказать-то надо? Что под массив резервируется хренова куча оперативной памяти? Или как запрос к БД по частям сделать?
А что подсказать-то надо? Что под массив резервируется хренова куча оперативной памяти? Или как запрос к БД по частям сделать?
Я понял. Так и думал что на куски разбивать. Просто показал тут кусок, что может быть мне бы сказали, что так то и так то можно ужать данные (ну типа того), что можно с массивами сделать так то и так то...Но если нет, то как я понимаю, только один вариант.
а именно, пилить запрос к бд на несколько...
а точнее, не все 30 тыс строк получать, а по 5 тыс строк, например, итого в 6 ть заходов.
или кстати вы про вариант, что получать данные не сразу по всем полям, а по 10-ть полей....
Лично я по строкам распилил бы - проще скрипт получится. Полей в таблице как-то многовато, кстати, но переделывать таблицы, я так понял, уже поздно.
И да, у Вас ещё много похожих двумерных массивов заложено - это тоже не есть гут. Это как бы впечатление, не вникая в цели и задачи.
Вам нужна пакетная обработка, или же расширять лимиты на память. Но вообще, конечно, лучше все таки пакетно обрабатывать.
как вариант вы можете не создавать массивы вообще. Для чего вы их делаете?
Нет возможности сразу вернуть дескриптор запроса и уже там где вы выводите массивы, обработать циклом while сам дескриптор?
http://php.net/manual/en/ini.core.php#ini.memory-limit
Вам нужна пакетная обработка, или же расширять лимиты на память. Но вообще, конечно, лучше все таки пакетно обрабатывать.
Мне подсказали вариант, что просто нужно как то обойтись без этих массивов.
Т.е. не писать в массивы, а сделать внутри цикла все что нужно, условно говоря считывать, обрабатывать построчно, а не все сразу.
ps Нет, все таки в цикле не получается, слишком долго все выполняется, что в итоге не выполняется.
Потому что он с каждым новым id из таб1, ищет такой же в таб2 каждый раз теперь, ищет и проверяет правильность данных(идет сравнение характеристик товара с id таким-то в таб1 и таб2, более 30-ти характеристик)
А раньше было просто в массиве все из первой, он шел в таб2 и тупо все по порядку id проверял.
---------- Добавлено 09.02.2017 в 20:09 ----------
как вариант вы можете не создавать массивы вообще. Для чего вы их делаете?
Нет возможности сразу вернуть дескриптор запроса и уже там где вы выводите массивы, обработать циклом while сам дескриптор?
Отвечаю цитатой того, что я написал чуть выше. Как раз попробовал. Не получается.
ps Нет, все таки в цикле не получается, слишком долго все выполняется, что в итоге не выполняется.
Потому что он с каждым новым id из таб1, ищет такой же в таб2 каждый раз теперь, ищет и проверяет правильность данных (идет сравнение характеристик товара с id таким-то в таб1 и таб2, более 30-ти характеристик)
А раньше было просто в массиве все из первой, он шел в таб2 и тупо все по порядку id проверял.
ps сравниваю, а не просто перезаписываю данные, чтобы вывести на экран инфо, какие именно характеристики и у какого id не соответствуют верным.
---------- Добавлено 09.02.2017 в 20:15 ----------
Лично я по строкам распилил бы - проще скрипт получится. Полей в таблице как-то многовато, кстати, но переделывать таблицы, я так понял, уже поздно.
И да, у Вас ещё много похожих двумерных массивов заложено - это тоже не есть гут. Это как бы впечатление, не вникая в цели и задачи.
Я правильно понимаю - распилить по строкам, т.е. 30 тыс товаров сверять пакетами по 5 тыс например.
Второе - похожие двумерные массивы? Нет. Я наверное правильно сделал.
Есть id товара. Есть 30 характеристик.
mass_nazvanie_harakteristiki[$id][0] = значение_характеристики.
Далее, получая просто поочередно все id из таб2 в цикле проверяем, у данного id сходство характеристик.
т.е. что то типа
if (id_характеристика_такая_то!=mass_nazvanie_harakteristiki[$id][0]) {...}
Есть id товара. Есть 30 характеристик.
Насколько я вижу, дальше [0] дело не идёт. Этот элемент только память жрёт. Правильнее было бы так:
---------- Добавлено 09.02.2017 в 21:41 ----------
А вот это уже отдельный вопрос:
Далее, получая просто поочередно все id из таб2 в цикле проверяем, у данного id сходство характеристик
Может быть, сразу в запросе подключать вторую таблицу через JOIN?
Правильнее будет вообще не проверять все 30 тысяч строк в массиве, а перестроить SQL запрос так, чтобы он сразу нужные строки возвращал. Т.е. в сам запрос добавлять условия проверки, соответствует характеристика нужной или нет.
Правильнее будет вообще не проверять все 30 тысяч строк в массиве, а перестроить SQL запрос так, чтобы он сразу нужные строки возвращал. Т.е. в сам запрос добавлять условия проверки, соответствует характеристика нужной или нет.
Не представляю как это возможно. [ATTACH]160167[/ATTACH]
Ведь именно, что нужно проверить каждый id в таб2, все ли его характеристики сходятся с характеристиками из таб1.