
dypa
05.10.2018
09:05:36

Yuriy
05.10.2018
09:05:38

Dmitry
05.10.2018
09:06:00
Опять же, что, по твоему, делает PHP интерпретатор?
Он десериализует файл в синтаксическое дерево, а потом во оп коды

Google

Yuriy
05.10.2018
09:06:45
Блин
если я храню данные в sql в частности если храню там массив PHP то я его вначале сериализую - это время

Dmitry
05.10.2018
09:07:10
С какой базой производились сравнения? Производились ли сравнения с array vs json?

Yuriy
05.10.2018
09:07:23
затем когда я считываю из базы сериализованный массив - я его десеарилизую

Dmitry
05.10.2018
09:08:11
еще раз, любая конвертация текста в структуру есть десериализация, пусть то json или .php

Yuriy
05.10.2018
09:08:16
записать массив в файл и считать его - быстрее чем записать массив данных и считать его через mysql

dypa
05.10.2018
09:08:32
mysql
ахаха, не осилил документацию по json xDDD

Dmitry
05.10.2018
09:08:34
Были ли сравнения с nosql базами

Yuriy
05.10.2018
09:10:42
Дмитрий, я поделился "горьким опытом" в отношении фии include() Ты всё упираешь на архитектуру. Я в любой архитектуре могу найти недостатки, и, думаю, ты тоже. Но от этого, утекать памяти через include() меньше не станет.

dypa
05.10.2018
09:11:23

Mikhail
05.10.2018
09:11:26
Столкнулся с проблемой такой, использую Laravel & jwt-auth и теперь понимаю что использовать jwt не получится в web,
Но мне нужно как то сделать middleware для роутов /admin,
и получается нужна сессия что бы не пускать ненужных пользователей туда, сама админка тоже устроена как SPA и юзает jwt что бы общаться с сервером, и вот теперь делема как решить вопрос,
Видал решения хранить в куках jwt_token но уж что то мне кажется это огромным костылем.

Yuriy
05.10.2018
09:11:57

Google

dypa
05.10.2018
09:12:20

Dmitry
05.10.2018
09:14:28
Архитектура всега во главе. Если ты выбираешь архитектуру с использованием механизмов явно не предназначенных для того, что ты делаешь, а include не предназначен для подгрузки данных, он предназначен для загрузки кода, то ты должен это очень весомо обосновать.
Ты выбрал решение, которые выглядит неверным с первого взгляда, ты не провел полный ресерч, что бы обосновать ошибочность первого взгляда, закономерно наступил на какие-то грабли и рассказываешь нам про них. На что тебе закономерно говорят, что ты выбрал неверный путь.


Yuriy
05.10.2018
09:16:55
Архитектура всега во главе. Если ты выбираешь архитектуру с использованием механизмов явно не предназначенных для того, что ты делаешь, а include не предназначен для подгрузки данных, он предназначен для загрузки кода, то ты должен это очень весомо обосновать.
Ты выбрал решение, которые выглядит неверным с первого взгляда, ты не провел полный ресерч, что бы обосновать ошибочность первого взгляда, закономерно наступил на какие-то грабли и рассказываешь нам про них. На что тебе закономерно говорят, что ты выбрал неверный путь.
Дмитрий, это ты рассуждаешь об архитектуре. Я говорю о функции include, о том, что она может завалить скрипт в случае включения большого количества файлов, тестик не поленился сбросил, повторяю:
for($i = 0; $i < 100000; $i++){
$df = fopen($i.".txt", "w");
fclose($df);
include($i.".txt");
unlink($i.".txt");
} // fr
Я не пытался доказать, что моя архитектура лучше, чем какая-то другая - боЗе упаси, как написал выше в любой архитектуре есть недостатки. И разговор, повторюсь, не об архитектурах)


Dmitry
05.10.2018
09:18:55
А я говорю, что это никому не нужное знание. Более того, стоит запретить его распространять, что бы джуны выбираеющие кривые решения и не делающие ресерча набивали шишки, учились думать или хотя бы ресерчить.
Такое вот обучение

Yuriy
05.10.2018
09:21:12
Если оно тебе не нужно - игнорируй. Если ты, как будучи опытный программист видишь решение, или изъян - так поделись. Ну это как по мне. У тебя, видимо, архитектура психологии другая.

Pavel
05.10.2018
09:26:29
Всем привет.
Возможно, вы слышали про October CMS – самую популярную CMS, построенную на базе Laravel Framework.
Сегодня стартовала кампания по выводу October CMS в GitHub Trends. Вы можете помочь в этом просто поставив звезду репозиторию проекта https://github.com/octobercms/october. Репозиторию необходимо набрать не менее 100 звёзд за сутки, чтобы добиться этой цели. ?
Заранее благодарю за помощь неравнодушных. ?

dypa
05.10.2018
09:28:23


Yuriy
05.10.2018
09:32:29

dypa
05.10.2018
09:33:48
Успокойся.
я 2 дня в чате читаю бред про тупость с include, стоит и меня послушать :)

Pavel
05.10.2018
09:34:35

dypa
05.10.2018
09:35:52

Pavel
05.10.2018
09:37:25

Dmitry
05.10.2018
09:40:26

Google

Yuriy
05.10.2018
09:44:02
В качестве решения проблемы оверпамяти этого скрипта:
for($i = 0; $i < 100000; $i++){
$df = fopen($i.".txt", "w");
fclose($df);
include($i.".txt");
unlink($i.".txt");
} // fr
ты предлагаешь "не использовать файлы, использовать базу если большой поток мелких запросов по ключу - использовать nosql базу или mysql handlersocket"
Хорошо, я понял тебя. Правда, боюсь, что вариант твоего решения в данном случае не подходит. Но спасибо.

Pavel
05.10.2018
09:49:13

dypa
05.10.2018
09:52:18

Yuriy
05.10.2018
09:54:13

Yoskaldyr
05.10.2018
09:54:22
Я могу еще добавить парочку решения его проблемы, но это будет похоже на паралимипиаду и не буду делать ибо не для неокрпших умов

Dmitry
05.10.2018
09:56:01

Yoskaldyr
05.10.2018
09:57:56

Pavel
05.10.2018
09:59:45

Yuriy
05.10.2018
10:00:02
Почему не подходит, обоснуй
Долго объяснять, что делается в этом скрипте
for($i = 0; $i < 100000; $i++){
$df = fopen($i.".txt", "w");
fclose($df);
include($i.".txt");
unlink($i.".txt");
} // fr
Но если кратко, то в нём не ведётся работа с данными )))

Dmitry
05.10.2018
10:01:13

Pavel
05.10.2018
10:01:52

Pavel
05.10.2018
10:02:28
Поэтому ты сделал только хуже по всем параметрам. Стало непривычнее, медленнее, немасштабируемо, и течет.

Yuriy
05.10.2018
10:02:55

Pavel
05.10.2018
10:03:19
Тут порассуждать не поможет, надо бенчмарки с графиками

Dmitry
05.10.2018
10:03:53
Мне кажется, что если местных разорвет от твоих обсуждений - это повод задуматься, что ты что-то делаешь не так.

Pavel
05.10.2018
10:04:57
+ ты еще добавил огромный оверхед на то что каждый файл php пытается по честному распарсить, включая свой интерпретатор, то есть это не просто чтение.

Yuriy
05.10.2018
10:05:08

Dmitry
05.10.2018
10:07:02
Вопрос архитектуры не нужно паднимать, он поднимается сам у любого человека, которому важен не факт абстрактной проблемы, а ее влияние и применимость.

Google

Yuriy
05.10.2018
10:07:31
Дмитрий, я понял тебя, спасибо за ответы.

Yoskaldyr
05.10.2018
10:08:46

Yuriy
05.10.2018
10:10:02

Pavel
05.10.2018
10:13:17
Делалось. Но вопрос архитектуры я не поднимал.
Так выложи бенчмарки на гитхаб. Я первые шаги в пшп начал делать в 2005, но ни разу в жизни не помню чтобы include был проблемой, ни обсуждений на форумах нигде. А во времена 5.0 он оперативки жрал раза в 2-3 больше.
А серверы были в 10 раз меньше.

Feodor
05.10.2018
10:13:50
Хм, дежавю. Месяц назад этот человек уже побивал семерых MySQL одним массивом и вот опять...

Admin
ERROR: S client not available

Dmitry
05.10.2018
10:14:27
Юрий, еще вопрос - какая у вас нагрузка, что вам требуется такая оптимизация?

Yuriy
05.10.2018
10:16:22

Pavel
05.10.2018
10:17:00

Yuriy
05.10.2018
10:17:05

Pavel
05.10.2018
10:17:20
Ну да, неплохо.

Dmitry
05.10.2018
10:18:39
Да понятно, что прямое обращение к файлу будет быстрее, чем запрос в мускуль. Это уже обсуждали как раз с этой персоной.

Feodor
05.10.2018
10:18:54
Хотел спросить - а что бы статейку на хабре не запилить? Тут кто попало да и всего 816 человек. На хабре вы сможете открыть глаза всему русскоязычному сообществу сразу, кто не прочитает, тем друзья расскажут. С удовольствием почитаю, может что интересное в комментариях дополнят.

Yoskaldyr
05.10.2018
10:19:15
но если нормлаьная база, заточенное под подобное, то я бы поспорил

Pavel
05.10.2018
10:19:34

Yoskaldyr
05.10.2018
10:21:26
Скажем так - работать без опкод кеша сейчас нельзя, и это факт. Любые микрооптимизации будут бесполезны если сравнивать микрооптимизия без опкод кеша и неоптимизированный код с опкод кешем
но главная проблема инклуда, что он будет в опкод кеше и память быстрее закончится из-за него чем из-за списка файлов
просто хранить *данные* в *опкод* кеше - это полный мрак

Google

Yoskaldyr
05.10.2018
10:26:29
И если говорить о скорости то при очень длинных списках поиск по этим спискам замедляется и весь микро профит от инклуда данных пропадет из-за замедленения самой операции инклуда. Да это все микровремя, но надо думать сначала и читать документацию и понимать зачем это было сделано (список инклуда) а потом уже говорить даг или не баг
без этого "бага" много кода в пхп работало бы значительно медленнее

Yuriy
05.10.2018
10:28:19

dypa
05.10.2018
10:28:38


Yoskaldyr
05.10.2018
10:31:42
Индексы.
Да, только пхп не база данных и не так много внутренних структур там используется. Надо смотреть исходники пхп, но для простых списков врядли кто-то хешмап будет делать
и еще раз скажу насчет опкод кеша. Его можно залимитировать, но тогда возникает проблема записи, обновления и инвалидации кеша и это *значительно* более ресурсоемкая операция
можно например у опкод кеша включить всегда перепроверять файлы на предмет изменения, но это замедляет общее время работы. Или можно оставить по умолчанию, но тогда данные которые из инклуда могут быть устаревшие, потому что будут грузиться из опкодкеша
одним словом решение в изначальной редакции (архитектура + решение) гавно по определению.
Если изначально было кем-то придумано и надо было фиксить без импортов экспортов данных, то тут бы не было вопросов. Понятно что хак.
И конечно можно делать костылем, но только инклуд обязательно надо менять на что-то еще, например на обычное чтение файла и разбор данных (вариантов уйма)


Yuriy
05.10.2018
10:38:36
Да, только пхп не база данных и не так много внутренних структур там используется. Надо смотреть исходники пхп, но для простых списков врядли кто-то хешмап будет делать
В первом приближении хешмапы (ну или индексы на основе массивов), гораздо эффективнее, нежели чем индексы mysql Но во втором приближении, когда речь идёт об изменении данных и соот-но изменении индексов - индексы MySQL становятся предпочтительнее, поскольку MySQL, будучи независимым ПО, может позволить себе хранить индексы в оперативке. Но есть и третье приближение, суть которого - хранить не все данные а диапазоны. Но вот этот момент ещё не протестирован, и прогнозировать пока не берусь.

Yoskaldyr
05.10.2018
10:39:31
открою секрет - в мускуле хеш индексы тоже есть

Yuriy
05.10.2018
10:40:01
я в кугсе

Yoskaldyr
05.10.2018
10:40:32
любой кейвелью сторадж подошел бы идеально и работал бы быстрее на больших объемах данных, но мы не боимся трудностей, сначала их придумываем, а потом героически их решаем

Yuriy
05.10.2018
10:40:49
)))

Yoskaldyr
05.10.2018
10:43:16
Я не говорю о том что в базах есть оптимлаьное хранение данных + компрессия в результате чего бывает значительно эффективнее хранить в них, чтение с диска и из памяти даже быстрее чем без компрессии. Но все зависит от данных

Dmitry
05.10.2018
11:06:09
Да, написать свою субд со своими индексами всегда эффективнее, чем использовать готовую. Особенно когда у людей 1кк+ rpm

Pavel
05.10.2018
11:06:31
И когда людей в штате 1кк+