Комментарии 17
НЛО прилетело и опубликовало эту надпись здесь
Думаю вместо того, что написал автор, надо брать очереди и писать воркеры. Получится прямее. Вы передаете диапазон данных, которые должен обработать один из экземпляров скрипта, однако может произойти ошибка по середине. Нужно понимать как обработать оставшиеся данные, на каком месте мы остановились, как поднять скрипт с места остановки.
+1
Никаких «потоков» здесь нет, вы просто запускаете процессы в фоне. Перенаправляя их stdout и stderr в /dev/null
+4
Это многопроцессность (multiprocessing), а не многопоточность (multithreading). Это вполне себе определенные подходы, разница которых заключается в том, что мы используем для параллельного вычисления — процессы или потоки. В терминах операционной системы — это тоже вполне определенные (и разные) вещи. По-этому, давайте придерживаться терминологии.
+2
Эмуляция это конечно хорошо, но для обработки жирных Json есть либы базирующиеся на стримах
https://github.com/kuma-giyomu/JSONParser
https://github.com/salsify/jsonstreamingparser
https://github.com/halaxa/json-machine
https://github.com/violet-php/streaming-json-encoder
+3
Грузить бигдата целиком в память — ну такое себе решение. Это сейчас 400 мегабайт, а если данных на пару гигов? Срипт даже не запустится. Выше верно подсказали про стримы, а там уже можно и все остальное наворачивать.
0
Зависит от задачи. У меня под некоторые задачи есть вот такой сервер:
$ cat /proc/meminfo | grep MemTotal
MemTotal: 396269164 kB
0
Грузить бигдата целиком в память — ну такое себе решение.
Q: Мужики. Могу ли я загрузить текстовый файл в 5 миллионов строк в память?
A: А что за комп?
Q: Sun StarFire, 32 cpu, 128 Gb RAM
A: Тебе можно, валяй.
(с) ru_perl 90-е годы
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Простой вариант реализации многопоточности на PHP