
Александр
06.09.2018
17:53:50
function loadLines(): \Generator
{
yield from \file('./large_file.txt');
}
сек, некрасиво
function loadLines(): \Generator
{
yield from \file('./large_file.txt');
}
function loadLines(): \Generator {
$fp = fopen('./large_file.txt', 'rb');
while(($line = fgets($fp)) !== false)
yield $line;
fclose($fp);
}
echo \memory_get_usage(true) / 1024 / 1024, \PHP_EOL;
$lines = loadLines();
echo \memory_get_usage(true) / 1024 / 1024, \PHP_EOL;
foreach ($lines as $line) {
# code...
}
echo \memory_get_usage(true) / 1024 / 1024, \PHP_EOL;
echo \memory_get_peak_usage(true) / 1024 / 1024, \PHP_EOL;
вот 2 функции

Google

Александр
06.09.2018
17:54:41
с первой вывод: 2 2 21 41
со второй вывод: 2 2 23 43
что я делаю не так?
естественно я по очереди комментировал их)
я если что не для того чтобы посраться, мне разобраться интересно

Dmitry
06.09.2018
17:56:22
файл то какой размер?

Александр
06.09.2018
17:56:29
20 мб

Shmaltorhbooks
06.09.2018
17:58:00
fopen сам по себе читает не весь файл. он передвигает внутренний указатель на текущую позицию и читает по шагам
А file по документации читает весь. И если file - не генератор, то он сначала прочитает все в память, а потом отдаст

Александр
06.09.2018
17:58:54
почему тогда разницы в выполнении нет?
даже с fopen больше расходуется

Dmitry
06.09.2018
18:00:38
мне сложно сказать что ты делаешь не так, возможно запускаешь не так, или коментаришь не так или фал слишком маленький, что скрывается за какими-то другими расходами

Александр
06.09.2018
18:01:33
да, видимо косякнул

Google

Александр
06.09.2018
18:01:44
лол, я путь к файлу не тот скопировал

Dmitry
06.09.2018
18:02:03
echo memory_get_peak_usage(true) . "\n";
function loadLines(): \Generator
{
$fp = fopen(“../xxx”, "rb");
while ($line = fgets($fp)) {
yield $line;
}
fclose($fp);
}
$i = 0;
foreach (loadLines() as $line) {
$i++;
}
echo memory_get_peak_usage(true) . "\n";
2097152
6291456
echo memory_get_peak_usage(true) . "\n";
function loadLines(): \Generator
{
yield from file(“../xxx”);
}
$i = 0;
foreach (loadLines() as $line) {
$i++;
}
echo memory_get_peak_usage(true) . "\n";
2097152
2286075904
вот тебе разница
блин что-то кривое оформление у меня
короче попробуй фал мегов на 100 хотя бы

Denis
06.09.2018
18:59:49
вопрос.
почему когда foreach($generator as ..) вызывается через переменную, меньше памяти используется по сравнению когда сразу foreach(generator() as ..) ?

Dmitry
07.09.2018
06:45:26
Всем привет, подскажите можно ли настроить phpstorm или PHP-CS что бы проверялся порядок namespace в файле?

ivan
07.09.2018
08:33:19

Dmitry
07.09.2018
08:33:36

Herman
07.09.2018
08:36:31
ну да
https://prnt.sc/krmcrn
оно?

ivan
07.09.2018
08:36:39
ну да
ctrl+atl+shift+l - reformat dialog. checkbox Optimize import
http://imagizer.imageshack.com/img922/9763/aMBaYe.png

Dmitry
07.09.2018
08:38:24
не это не то ((( Мне нужен вот такой порядок
1. use фрейма
2. use вендоров
3. use приложения

Maksim
07.09.2018
08:39:44

ivan
07.09.2018
08:39:46

Dmitry
07.09.2018
08:40:18

Maksim
07.09.2018
08:40:53

Dmitry
07.09.2018
08:41:25

Maksim
07.09.2018
08:41:36

Dmitry
07.09.2018
08:42:10
аргументация?
удобно смореть что откуда юзается и так уже исторически сложилось

Maksim
07.09.2018
08:42:49

Google

knopkod4v
07.09.2018
08:43:17

militska
07.09.2018
08:43:21
или по размеру строчки, что бы ровненько получилось...)

Maksim
07.09.2018
08:43:47

Dmitry
07.09.2018
08:43:51
ну со своим уставом в чужой монастырь не хоят :)

Maksim
07.09.2018
08:44:02
на самом деле, выхлопа нету из этого. Лишний геморрой и АБСОЛЮТНО бесполезная трата времени)

Dmitry
07.09.2018
08:44:43
согласен, мне проще ctrl+o и не парится. Но на ревью заварачивают из-за этого

Maksim
07.09.2018
08:45:38

knopkod4v
07.09.2018
08:45:39

Dmitry
07.09.2018
08:46:37

Maksim
07.09.2018
08:47:32

knopkod4v
07.09.2018
08:47:36
в пхпшторме вроде вроде ещё есть прикольная фича - удаление неиспользуемых импортов, я как-то жмакнул =\

Dmitry
07.09.2018
08:48:35

knopkod4v
07.09.2018
08:49:16

Nurik
07.09.2018
08:54:13
Всем привет, ребят поделитесь опытом. Кто делал pub/sub поверх Postgres Notify, Listen, Trigger ?
Насколько это эффективно ?

Maksim
07.09.2018
08:54:25
не эффективно, не надёжно, тратить время не стоит :)
listen\notify ок годится для всякой статистики, имхо. не более. Завязывать на него логику - так се идея
у меня на текущий момент используется rabbitmq, как основная очередь для pub\sub, и подписка на пару таблиц в постгре. Но события из постгри слушает отдельный демон и с небольшими исправлениями\добавлениями отправляет в кролика. Такая вот дикая ректальная схемка.

Nurik
07.09.2018
09:07:19

Google

Nurik
07.09.2018
09:08:28
http://blog.sagemath.com/2017/02/09/rethinkdb-vs-postgres.html

Maksim
07.09.2018
09:08:54

Denis
07.09.2018
09:09:11

Nurik
07.09.2018
09:10:02

Maksim
07.09.2018
09:11:40
Понял)
Если поиграться захочется, то вот:
https://github.com/amphp/postgres/blob/master/examples/multi-listen.php

Sergey
07.09.2018
09:12:30
просто у меня выходитт наоборот (за счет тотго что надо хранить еще одну переменную

Admin
ERROR: S client not available

Denis
07.09.2018
09:17:25
Get peak usage

Nurik
07.09.2018
09:18:06

Maksim
07.09.2018
09:19:00
Благодарю.
но не стоит на это логику вязать. Это путь в бездну

Nurik
07.09.2018
09:20:29

Maksim
07.09.2018
09:21:04
ну типа обновил, затем запаблишил эвент.

Nurik
07.09.2018
09:29:26
Ну это не очень надежно просто, все ложится на руки разработчиков. Но зато масштабировать легче.
+ еще синкать стейт нужно.

Maksim
07.09.2018
09:30:49
это вполне надёжно, ибо выполняется внутри транзакции

Nurik
07.09.2018
09:31:02

Maksim
07.09.2018
09:32:12
$transaction->start();
try
{
$transaction->update($collection);
$transport->publish($event);
$transaction->commit();
}
catch(\Throwable $throwable)
{
$transaction->rollback();
}
либо всё, либо ничего. Надёжнее некуда

Google

Maksim
07.09.2018
09:33:00

Артур Евгеньевич
07.09.2018
09:36:14
это Нурику

Maksim
07.09.2018
09:36:45
это Нурику
он так-то про него сам говорил) вот меня и смутило)

Nurik
07.09.2018
09:37:31
хз что ты имеешь в виду
Ну я имел ввиду, используя какие подходы можно гарантировать, что при любых исходах событие об изменении будет получено клиентом. Т.е. делать ack в rabbitmq только при условии что был получен JSON-RPC ответ что он получил изменения ?

Maksim
07.09.2018
09:37:53
получил сообщеньку, акнул, чёт сделал - профит
получил сообщеньку, акнул, чёт не сделал - вернул в очередь
так или иначе сообщение будет получено клиентом, если оно было отправлено сервером)

Valentin
07.09.2018
09:45:56
Оффтоп: в Беларуси есть какой то номер из налоговой типа PESEL / номер налогоплательщика? Как он называется? Спасибо

Anton
07.09.2018
09:51:55
УНП

Maksim
07.09.2018
09:52:56
УНП
а он разве не для юрлиц только?

Anton
07.09.2018
09:53:19
У Физлиц кроме Личного номера ничего нет

Maksim
07.09.2018
09:53:21
ну и ипшников до кучи
а личный номер как-то корелирует с зелёненькой карточкой?)
блин, нахер так жить, в 30 лет не знать свой порядковый номер :)

Anton
07.09.2018
09:54:37

Maksim
07.09.2018
09:54:48

Anton
07.09.2018
09:55:17
да, тот который расшифровать еще можно. и вытянуть пол, дату рождения

Maksim
07.09.2018
09:55:26
надо найти будет, куда я её засунул и посмотреть)
просто в рф есть ИНН у всех
так, для общего развития узнал, спасибо)
а то не патриотично знать инн и не знать личный номер :)))