поможите, плиз, с php & mysql

123
Y
На сайте с 11.05.2006
Offline
99
#11
timur-kar:
нечего демагогию разводить из-за пустякового скрипта которых похоже никому и не нужен особо :)

нужен! я просто все это время дописывал коннект к БД ))

все работает, спасибо, timur-kar, gerkon и всем, кто пожелал помочь.

Коля Дубр
На сайте с 02.03.2005
Offline
153
#12
AndreM:
ответ "затем": затем, чтобы человек и дальше по-индусски не мыслил, учить хорошему надо )) хотя каждому свое, я просто прокомментировал...

Позволю себе немного пофлеймить :)

Во-первых, я настаиваю, что каждый, кто говорит об "индусском коде", "быдлокодерах" и т.д. обязан продемонстрировать публике хотя бы 20 строчек собственного кода. Чтоб сверить понятия о прекрасном.

Во-вторых, код обязан быть прагматичным, отсюда и мера его понятности, красоты и качества в целом. В нашем примере, ну, чтоб не быть индусами, надо бы накидать с десяток классов. Абстракцию для файла (с наследованными расширениями под разные ФС - а то мало ли...), DBAL + расширение для каждой известной БД. Плюс сам класс-манагер, с кучей проверок - по длине запроса, по времени выполнения и проч... Ну согласитесь, это скорее всего будет глупо смотреться. Потому что не прагматично. Потому что в задаче сказано, что у нас mysql, что файлов - несколько тысяч (т.е. за один прогон все прекрасно отрабатывается), и главное - скорее всего скрипт нужен одноразовый :)

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

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
AM
На сайте с 12.09.2007
Offline
47
#13
Коля Дубр:
Позволю себе немного пофлеймить :)

Во-первых, я настаиваю, что каждый, кто говорит об "индусском коде", "быдлокодерах" и т.д. обязан продемонстрировать публике хотя бы 20 строчек собственного кода. Чтоб сверить понятия о прекрасном.

Во-вторых, код обязан быть прагматичным, отсюда и мера его понятности, красоты и качества в целом. В нашем примере, ну, чтоб не быть индусами, надо бы накидать с десяток классов. Абстракцию для файла (с наследованными расширениями под разные ФС - а то мало ли...), DBAL + расширение для каждой известной БД. Плюс сам класс-манагер, с кучей проверок - по длине запроса, по времени выполнения и проч... Ну согласитесь, это скорее всего будет глупо смотреться. Потому что не прагматично. Потому что в задаче сказано, что у нас mysql, что файлов - несколько тысяч (т.е. за один прогон все прекрасно отрабатывается), и главное - скорее всего скрипт нужен одноразовый :)

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

1. здесь 20 строчек думаю многовато, хотите пообщаться поподробнее - велкам в аську, думаю наскребу вам примеров из проектов, хотя бы из того, что в подписи.

2. Пример вот, как разбить на порции писать не буду


// создаем поля для вставки
$values = array();
foreach ($my_category as $key => $val)
$values[] = "(".$id_company.", ".$key.", ".$val.", 0, ".$date.")";

// вставляем новые категории в текущую компанию
if ($values) db_query("INSERT INTO ".TAB_PREFIX."direct_categories (id_company, id_category, price, special, date) VALUES ".implode(', ', $values));

Чтобы не быть индуссами, не надо пихать в циклы запросы.

3. Дерево через рекурсию и должно быть, не должно быть запроса в рекурсивной функции. В этом Вас переубеждать не надо?

С уважением, Морозов Андрей, разработчик проекта eTXT.ru (http://www.etxt.ru/?r=morozov), icq 55377667
timur-kar
На сайте с 29.05.2006
Offline
85
#14
AndreM:
2. Пример вот, как разбить на порции писать не буду
Чтобы не быть индуссами, не надо пихать в циклы запросы.

Вот не хотел дальше флеймить, думал Коля Дубр закрыл тему своим постом и всем все понятно, но видимо придется все-таки продолжить. Регулярно вижу программистов, которые для решения простой задачи вместо того чтобы сделать то, что требуется начинают делать умное лицо, красивую архитектуру и хитрые алгоритмы. В результате на задачу тратят много времени (чаще всего ошибки и критичные получаются в простейших вещах) не желая признавать что код должен действительно "обязан быть прагматичным"(!) и следовать из задачи.

Вот Вы сейчас привели абстрактный код, написав "как разбить на порции писать не стану", а между тем это:

1) добавит еще несколько строк для решения примитивнейшей задачи, разбирать это человеку будет сложнее. Т.е. код вместе с решением порциями займет строк 10-12 которые нужно осмыслить (прошу Вас, не стоит утруждаться и доказывать что Вы уместите его в 4 строки - я и так верю);

2) лишит вас главного аргумента "не надо пихать в циклы запросы", все-равно у вас будут запросы в циклах, просто их будет меньше;

и все это (в т.ч. 2 страницы никому не нужных споров) ради того, чтобы запихнуть список файлов в бд

AM
На сайте с 12.09.2007
Offline
47
#15

хорошо, давайте флеймить дальше...

ситуация: некто ищет решение задачи, пусть, например, какую либо работу с кэшем, где нужно обойти 100 000 файлов, и удалить/добавить инфу по ним в БД. Человек не знает, как оптимально это сделать, забивает в поисковик и смотрить - опа, на авторитетном форуме предлагают такое решение, и делает, а потом ему начальство и хостер дают по башке, когда БД и сайт падает... а прогер удивляется, он же на searchengines код взял, то есть это круто должно быть...

и таких примеров - тыща с хвостиком

ЗЫ. да в общем то пишите, как хотите, кто хотел - поинтересовался подробностями, не буду я ничего доказывать, все уже доказано проектами, в которых я участвую, и где посещалки более 100K в сутки, и людьми, которым я передал свой опыт. Спасибо за внимание.

ЗЫ2. Да, запросы в цикле остануться, только их будет меньше, раз в 500 в среднем, а соответственно и соединений с БД, которая при больших нагрузках иногда любит в середине работы выдавать max_user_connections

Хотя у меня настроение пофлеймить осталось, далее:

код: foreach (glob("*.*") as $filename) {

знаете, господа, память то у пхп ограничена, и когда ТС получить свой allocated memory (на память пишу) при считывании нескольких тысяц файлов, или таймаут при работе скрипта, или нулевую длину ответа, так как скрипт будет усердно читать несколько минут папку в память, он тоже наверно не обрадуется.

timur-kar
На сайте с 29.05.2006
Offline
85
#16
AndreM:
ситуация: некто ищет решение задачи, пусть, например, какую либо работу с кэшем, где нужно обойти 100 000 файлов, и удалить/добавить инфу по ним в БД. Человек не знает, как оптимально это сделать, забивает в поисковик и смотрить - опа, на авторитетном форуме предлагают такое решение, и делает, а потом ему начальство и хостер дают по башке, когда БД и сайт падает... а прогер удивляется, он же на searchengines код взял, то есть это круто должно быть...

ситуация: человеку нужно собрать несколько тысяч файлов с диска в БД. Он идет и спрашивает на форум. Ему не дают код, а начинают рассказывать как оно было-бы хорошо если бы было "порциями", приводят некий абстрактный код из которого он себе должен понять что вот так будет хорошо и всем будет Щастье с большой буквы Щ, даже бедным индусам, или со словами "показать хороший пример" дают реализацию которая скорее всего работать не будут, или дают решение (хотя нет, не дают, просто показывают что такое решение было бы еще лучше) которое работает у советчика на локальной установке и с блеском обломается у хостера. А прогер пытается все это понять и понять почему это не работает и в результате приходит к выводу что на SE слишком умный народ сидит.

AndreM:
ЗЫ. да в общем то пишите, как хотите, кто хотел - поинтересовался подробностями, не буду я ничего доказывать, все уже доказано проектами, в которых я участвую, и где посещалки более 100K в сутки, и людьми, которым я передал свой опыт. Спасибо за внимание.

это вообще no comments. пальцы раскинуты, слив засчитан. в общем думаю флейм пора заканчивать

Коля Дубр
На сайте с 02.03.2005
Offline
153
#17
AndreM:
В этом Вас переубеждать не надо?

было бы неплохо :)

AndreM:
а прогер удивляется, он же на searchengines код взял, то есть это круто должно быть...

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

В общем случае, тут есть один хороший вариант - иметь под рукой библиотеку для сборки SQL-запросов. Это такая объемистая дура, которую написали когда-то давно умные люди, и которая все это умеет. Это да, это хороший вариант. Соответственно, к библиотечному коду можно предъявлять требования по универсальности, на то он и библиотечный. А предъявлять такие требования к сугубо служебному коду - имхо, это ханжество :)

AM
На сайте с 12.09.2007
Offline
47
#18
Коля Дубр:
было бы неплохо :)

Ладно, никто здесь никому не докажет, тему можно закрыть. Пойдемте в следующую, думаю будет интересно.

gerkon
На сайте с 21.10.2005
Offline
40
#19
AndreM:

код: foreach (glob("*.*") as $filename) {
знаете, господа, память то у пхп ограничена, и когда ТС получить свой allocated memory (на память пишу) при считывании нескольких тысяц файлов, или таймаут при работе скрипта, или нулевую длину ответа, так как скрипт будет усердно читать несколько минут папку в память, он тоже наверно не обрадуется.

Знаем. glob отрабатывает довольно быстро и пхп не хватит памяти только в случае, если на сервере больше 500000 файлов примерно. И это при 8-метровом лимите на процесс.

К тому же ТС уже сделал всё, что ему требовалось.

C уважением, Андрей. Пользуюсь этим хостингом уже 4 года! (http://www.replay.ru/index.php?part_id=3600) Ведущий манул Pixshock.net (http://www.pixshock.net)
AM
На сайте с 12.09.2007
Offline
47
#20
gerkon:
Знаем. glob отрабатывает довольно быстро и пхп не хватит памяти только в случае, если на сервере больше 500000 файлов примерно. И это при 8-метровом лимите на процесс.

какие то у вас файлы интересные, у меня по молодости glob на 100000 сжирал метров 20 с зависоном минут на 10, работало соответственно только на локалхосте с отключенным временным лимитом и памятью в 100 метров. Такие переборы лучше делать классическим примером из мануала по чтению папки.

123

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