
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 не должны допускать что-то подобное. Нет, список заинклюдиных файлов - это вполне себе фича, но нужно дать возможность програмисту отключать её.

Ортем
05.10.2018
08:04:54
Сейчас погуглю сколько стандартно памяти выделяется для этих целей
У меня например в самописных простых проектах тупо автоинклюд идет. Все что скрипт просит, она сама подрубает. По этому даже не задумывался

Yuriy
05.10.2018
08:06:55

Ортем
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

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

Yuriy
05.10.2018
08:48:46
ты ничего не нашёл (

Google

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

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

Yuriy
05.10.2018
08:58:24

dypa
05.10.2018
09:02:57

Yuriy
05.10.2018
09:03:07

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 делает?