mysql_query проблем ?
13 отговора
569 прегледа
mysql_query проблем ?
Здравейте !
Имам една заяка към база данни на mysql :
select * from table1 ;
Заявката връща 6 хиляди реда. Когато я изпълня под DOS прозорец с mysql клиента всичко е наред. Когато използвам php функцията mysql_query, забива. Ако променя заявката така :
select * from table1 where column1='5' ;
при което се връщат около десетина реда, заявката работи !
Използвам php 5.0.4 и mysql 4.1.11 под Windows XP.
Ще съм благодарен на тези, които могат да помогнат !
Имам една заяка към база данни на mysql :
select * from table1 ;
Заявката връща 6 хиляди реда. Когато я изпълня под DOS прозорец с mysql клиента всичко е наред. Когато използвам php функцията mysql_query, забива. Ако променя заявката така :
select * from table1 where column1='5' ;
при което се връщат около десетина реда, заявката работи !
Използвам php 5.0.4 и mysql 4.1.11 под Windows XP.
Ще съм благодарен на тези, които могат да помогнат !
Re: mysql_query проблем ?
Мисля, че 6000 реда препълват разрешената памет.
Направи си цикъл и вади по 20-30 реда
Ще е по-бавно, но ще свършиш работа.
Успех
И най-ярките личности си плащат тока.
Направи си цикъл и вади по 20-30 реда
Ще е по-бавно, но ще свършиш работа.
Успех
И най-ярките личности си плащат тока.
Re: mysql_query проблем ?
А от къде се задава големината на тази памет ? Натройки на php или на mysql трябва да направя ? А защо тази заявка работи под command prompt и mysql клиента и не дава съобщение за грешка ...
Re: mysql_query проблем ?
Виж как сам си си отговорил...
щом върви през командния ред значи проблема е в пхп настройките.
трябва да видиш в пхп ини коя е опцията за размер на резултати или евентуално на променливи изобщо.
Мисля че трябва да промениш memory_limit, но имайки предвид че при мен настройката по подразбиране е 8МБ, ако на теб ти трябват повече от това за да изпълниш един скрипт и искаш да бърникаш по ИНИ-то, т.е. вероятно е за лична употреба скрипта... идва въпросът дали изобщо ПХП като език е подходящ за тая работа.
все пак аз бих се придържал към съвета който вече получи
разцепи заявката на на блокове от по 100 примерно и я изпълнявай целия алгоритъм итеративно със съответните лимит-и докато не ти върне празен резултат, така ще се отървеш от проблема
щом върви през командния ред значи проблема е в пхп настройките.
трябва да видиш в пхп ини коя е опцията за размер на резултати или евентуално на променливи изобщо.
Мисля че трябва да промениш memory_limit, но имайки предвид че при мен настройката по подразбиране е 8МБ, ако на теб ти трябват повече от това за да изпълниш един скрипт и искаш да бърникаш по ИНИ-то, т.е. вероятно е за лична употреба скрипта... идва въпросът дали изобщо ПХП като език е подходящ за тая работа.
все пак аз бих се придържал към съвета който вече получи
разцепи заявката на на блокове от по 100 примерно и я изпълнявай целия алгоритъм итеративно със съответните лимит-и докато не ти върне празен резултат, така ще се отървеш от проблема
Редактирано от id на
Re: mysql_query проблем ?
Според мен трябва да се замислиш дали изобщо ти трябва бази данни....защото заявки от рода на
SELECT * не говорят добре....
Най-добре си прегледай дизайна на базата данни.
SELECT * не говорят добре....
Най-добре си прегледай дизайна на базата данни.
Re: mysql_query проблем ?
Не е сигурно, че проблемът ти е в паметта.
Напиши какво го правиш резултата от тази заявка след това?
И какво горе-долу съдържа дадената таблица или изглед?
Everything louder than everything else...
Напиши какво го правиш резултата от тази заявка след това?
И какво горе-долу съдържа дадената таблица или изглед?
Everything louder than everything else...
Редактирано от Dakota на
Re: mysql_query проблем ?
Изкарвам съдържанието в табличен вид, като генерирам html страница.
забива ти ...
браузера а не php-to
да се опитам ли да позная че си с ИЕ
на 6000 реда ще трябва да го почакаш доста докато ти рендне табличката ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
да се опитам ли да позная че си с ИЕ
на 6000 реда ще трябва да го почакаш доста докато ти рендне табличката ;-)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: забива ти ...
Наистина пробвам с IE. Но освен него пробвах и на FireFox и Opera. Все същото. Затова използвах следното :
SELECT col1,col2,col3 FROM table1 LIMIT limit_number ;
и започнах да намалявам limit_number. Оказа се, че задам ли стойност по-голяма от 150 - забива. До 150 включително си работи ???
SELECT col1,col2,col3 FROM table1 LIMIT limit_number ;
и започнах да намалявам limit_number. Оказа се, че задам ли стойност по-голяма от 150 - забива. До 150 включително си работи ???
Re: забива ти ...
кой знае как си си форматирал таблицата и какво се опитва да направи браузера ти .....
по принцип ако не върне резултат до 30 сек. би трябвало php-то да умре на грешка....
я направи следното :
изтегли си страницата с някакъв download manager (flashget, getright, wget, ...) и ако тогава не стане (не се save-не голям html) кажи и ще мислим следващото (препълване на резулт буфери в mysql клиент/сървър)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
по принцип ако не върне резултат до 30 сек. би трябвало php-то да умре на грешка....
я направи следното :
изтегли си страницата с някакъв download manager (flashget, getright, wget, ...) и ако тогава не стане (не се save-не голям html) кажи и ще мислим следващото (препълване на резулт буфери в mysql клиент/сървър)
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: забива ти ...
Когато са до 150 реда, с FlashGet записва файл 16К. Когато са по-вече, не се записва нищо. Файлът, дори не започва да се записва. Следователно проблема не е в браузъра.
Re: забива ти ...
Много интересен казус
сега ще ти искам всички настройки на системата :
Версия на апачито, версия на PHP-то, версия на MySQL сървер и клиент
настройки на php, mysql server, mysql client.
направи целия дъмп на настройките и ги сложи някъде да ги четем
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
сега ще ти искам всички настройки на системата :
Версия на апачито, версия на PHP-то, версия на MySQL сървер и клиент
настройки на php, mysql server, mysql client.
направи целия дъмп на настройките и ги сложи някъде да ги четем
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: mysql_query проблем ?
6000 реда не са нищо. Нещо не правиш както трябва. Постни сорса на скрипта с който изпращаш заявките.
Re: забива ти ...
Пробвай да сложиш за първи ред в скрипта ти:
set_time_limit(300);
И кажи има ли разлика в броя на редовете, за които забива.
Everything louder than everything else...
set_time_limit(300);
И кажи има ли разлика в броя на редовете, за които забива.
Everything louder than everything else...