@phpclubru

Страница 675 из 956
Serhii
04.10.2018
19:37:49
CSS может влиять на: сам элемент дочерние элементы следующие соседи дочерниче следующих соседей

Как ты планируешь разместить теги?

Тег nostock?

Он находится после того, на который влиять должен, нельзя

Google
Serhii
04.10.2018
19:47:07
А JS может всё

Правда возможно стоит таки поиграться с разметкой в html

А так ты не научишься, если напишу за тебя Let’s google: js previousElementSibling js classList

Yuriy
04.10.2018
22:16:41
Оказывается, фии include/require[_once] являются источником утечек памяти.

Всё потому, что при своей работе они заполняют внутренний массив включённых файлов, тот что выводит фия get_included_files()

И этот массив никак не очистить

То есть включил ты к примеру тыщу файлов, а это может при значительно ограниченном количестве памяти привести к фатальной ошибке try memmory allocate

Dmitry
04.10.2018
22:22:44
тысяча? съест память?

Yuriy
04.10.2018
22:27:09
условно говоря. если выставить низким memory_limit, ну или включить 100 тысяч, или и то и то. сам факт, что память утекает вполне легально.

Dmitry
04.10.2018
22:28:38
да а что 100 тысяч то... давай сразу инклудь неcколько миллионов файлов ;)

в общем надуманная проблема

Алексей
05.10.2018
03:39:28
Даня, у тебя амбиций много, а вот желания изучать нет. Ты хочешь побыстрее получить результат не думая. Каждое твоё сообщение: "допешите за меня". Надо изучать, а если в тягость и нет желания, то через силу, а если и тогда нет желания, может не стоит заниматься программированием? Есть куча замечательных профессий )

Ортем
05.10.2018
06:07:25
в общем надуманная проблема
Она скорее касается либо криворуких либо начинающих, хотя начинающий врятли так много файлов заинклюдит.

Google
Ортем
05.10.2018
06:09:07
На самом деле не знаю что там такое должно выполняться чтобы заинклюдить такое колличество файлов. В нормальных проектах это на блоки делится в крайнем случае

Yuriy
05.10.2018
08:03:29
Она скорее касается либо криворуких либо начинающих, хотя начинающий врятли так много файлов заинклюдит.
Я нашёл утечку памяти в стандартной часто используемой функции интерпретатора include(). Начинающие, обычно, не имеют представления об утечках, их последствиях и зачем с ними нужно бороться. Это во-первых. Во-вторых, криворуко реализована функция include(), которая допускает утечку; каким бы криворуким или начинающим не был программист PHP, разработчики PHP не должны допускать что-то подобное. Нет, список заинклюдиных файлов - это вполне себе фича, но нужно дать возможность програмисту отключать её.

Yuriy
05.10.2018
08:06:55
Ты замерял сколько памяти она сжирает и как много для этого нужно заинклюдить файлов?
Ты в курсе, что память вещь относительная - у одного юзера стоит ограничение в 8 мегабайт оперативки, у другого 64 и тд. По выделению: один инклюд = длине пути к инклюдиному файлу.

Ортем
05.10.2018
08:07:33
В целом проблема ясна и реальна. Но в практике...

Yuriy
05.10.2018
08:08:27
Я на шарах регулярно вижу, как и пых 5, хотя это другая история.

Ортем
05.10.2018
08:09:14
НУ эт да. Фреймворки потребляют оперативу не слабо.

Yuriy
05.10.2018
08:11:31
В целом проблема ясна и реальна. Но в практике...
Практика это другой вопрос. Хотя. У меня свыше 5 млн объектов данных в NoSQL. Они инклюдятся. Скрипт валится. Причём при завале от этого даёт разные сообщения об ошибке: то ему времени исполнения не хватило, хотя оно в бесконечность выставлено, то оверпамять. И вот начинаешь капать и находишь безобидную include().

Ортем
05.10.2018
08:13:39
Честно говоря раньше никогда даже не задумывался. ЗАшел на хостинг самый дешевый у себя. ТАм 256 метров оперативы. В принципе можно забить, просто чуток постараться нужно. Но у меня такой хостинг исключительно для сайтов визиток или простых сайтов для фирм

Yuriy
05.10.2018
08:23:46
В зависимости от длины пути включаемых файлов память утекает по разному (кэп). К примеру, в моём частном случае 1 файл - в районе 40 байт, хотя если бы были ютф символы было бы больше. При этом, выставлено 256М на инстанс и скрипт не в состоянии сделать даже 1 млн включений:

for($i = 0; $i < 1000000; $i++){ $df = fopen($i.".txt", "w"); fclose($df); include($i.".txt"); unlink($i.".txt"); } // fr

Пришлось по итогу костыль с евалом писать. Жесть же!

Dmitry
05.10.2018
08:33:23
В общем, сказ о том, как делая херню можно упереться в другую херню

Юрий, а знаешь почему то, что ты написал - интересно лишь джуниорам (настолько, насколько им это в жизни не пригодится)?

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

А инклуд миллиона файлов - это вообще за гранью

здравого смысла

Google
Yuriy
05.10.2018
08:37:10
Ну что ты ещё мог сказать ))

Здравый смысл только у тебя - это понятно. Ты лучик света в тёмном мире джуниоров ))

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

Dmitry
05.10.2018
08:41:07
Во-первых, замена инклуда на работу подразумевает нормальные операции с файлами. Проблемы нет. Во-вторых, миллион файлов - это много, если джун делает что-то, где нужно работать с миллионом файлов - 99.99999% он неправильно решает задачу

Yuriy
05.10.2018
08:42:18
Нагрузочное тестирование - это правильно. Но доверие к пхп никто не отменял. Ведь спроси тебя ночью, без гугла и компа, сколько можно заинклюдить пустых файлов, ты бы как боженька ответил, да сколько есть на компе столько и можно. Но теперь, благодаря мне, ты так не ответишь.

Dmitry
05.10.2018
08:42:54
Нет, я бы ответил - не знаю, нужно проверить.

Admin
ERROR: S client not available

Yuriy
05.10.2018
08:43:16
ещё б ты сознался)

Dmitry
05.10.2018
08:43:56
ну конечно, то что ты выдумал исходя из своего мировозрения куда более вероятнее

Yuriy
05.10.2018
08:44:04
"как работает include?" -- "не знаю, мне нужно проверить"

ну конечно, то что ты выдумал исходя из своего мировозрения куда более вероятнее
архитектура не важна. важен факт наличия проблемы. ты можешь говорить сколько угодно, что тут проблема в архитектуре а не в функции, но лично я убеждён, что КАК МИНИМУМ и в функции тоже. но тебя ЧСВ подъедает и согласиться не даёт. вот и остаётся сказать "пошёл ты куда подальше джун со своими неправильными подходами"

Dmitry
05.10.2018
08:46:10
Я не вижу проблемы ?

Yuriy
05.10.2018
08:46:28
так не видь, я не против )

Dmitry
05.10.2018
08:46:51
Более того, я точно вижу, что наличие функций *_once подразумевает где-то хранение списка файлов ?

Но это так, лирика ;_

dypa
05.10.2018
08:47:29
Ну что ты ещё мог сказать ))
могу я сказать - делаешь какую то глупость и упорно продолжаешь ее делать, строишь из себя слишком много.

Yuriy
05.10.2018
08:47:56
Более того, я точно вижу, что наличие функций *_once подразумевает где-то хранение списка файлов ?
в оперативке инстанса, и доступа к этому списку нет. вот если бы ты нашёл (а я искал везде), то я бы сказал тебе "спасибо"

Dmitry
05.10.2018
08:48:20
что я нашел?

Google
dypa
05.10.2018
08:53:54
\я повторять уже разжеванное выше не собираюсь. Три пути у человека, чтобы разумно поступать: первый, самый благородный, — размышление; второй, самый легкий, — подражание; третий, самый горький, — опыт.

Dmitry
05.10.2018
08:55:16
Юрий, а можешь привести задачу, которую ты решаешь, что тебе проишлось инклудить хотя бы несколько десятков тысчяч файлов?

Yuriy
05.10.2018
08:58:24
\я повторять уже разжеванное выше не собираюсь. Три пути у человека, чтобы разумно поступать: первый, самый благородный, — размышление; второй, самый легкий, — подражание; третий, самый горький, — опыт.
кэп ) вот сидишь ты и размышляешь: "ага. здесь я буду использовать функцию include" и тебе в голову не приходит тестировать её на предмет включения файлов. итог - горький опыт.

Yuriy
05.10.2018
09:03:07
Юрий, а можешь привести задачу, которую ты решаешь, что тебе проишлось инклудить хотя бы несколько десятков тысчяч файлов?
Дмитрий, данные по автозапчастям хранятся в файлах. В силу того, что структура объектов может произвольно меняться, содержать ссылки на медийные ресурсы, которые хранятся отдельными файлами "рядом", принято решение хранить их в файлах в виде массивов. Также хранение в файлах обеспечивает быстрое считывание по сравнению с SQL ну и не требуется интерпретация. При этом индексы по данным хранятся в SQL.

dypa
05.10.2018
09:04:16
@roskoshinsky https://github.com/php/php-src/blob/26065662692f2ce7d1b7ebd1ab6c1c96d177a067/Zend/zend_language_scanner.c#L670 сиди разбирайся почему и как "течёт".

Yuriy
05.10.2018
09:04:22
Недостатки есть у всех подходов. Самый жёсткий недостаток в этом подходе - дёргается диск. Хотя этот недостаток решается кэшированием.

Dmitry
05.10.2018
09:04:59
Как это “не требуется интерпретация”, а что по твоем PHP делает?

Страница 675 из 956