Как стать автором
Обновить

Комментарии 17

НЛО прилетело и опубликовало эту надпись здесь
Уже очень долго юзаю потоки через pcntl_fork. И все в порядке и удобно.

А вот pthreads да, там какая-то задница с автолоадом начинается. Если у вас что-то простое, то пойдет, а для полноценного приложения появляется много проблем.

pcntl_fork — это не потоки, а процессы

Да, верно.

Расскажите подалуйста чтт не так в pthreads

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Автор pthreads написал и на данный момент предлагает использовать эту библиотеку для потоков в PHP.
Как он признает, реализация pthreads по различным причинам действительно получалась не слишком понятной
Думаю вместо того, что написал автор, надо брать очереди и писать воркеры. Получится прямее. Вы передаете диапазон данных, которые должен обработать один из экземпляров скрипта, однако может произойти ошибка по середине. Нужно понимать как обработать оставшиеся данные, на каком месте мы остановились, как поднять скрипт с места остановки.
НЛО прилетело и опубликовало эту надпись здесь
Недавно тоже раскапывал тему потоков в php и пришел к очереди (rabbitMQ). Посчитал это правильнее, чем использовать костыльные методы для многопоточности.
Никаких «потоков» здесь нет, вы просто запускаете процессы в фоне. Перенаправляя их stdout и stderr в /dev/null

Это многопроцессность (multiprocessing), а не многопоточность (multithreading). Это вполне себе определенные подходы, разница которых заключается в том, что мы используем для параллельного вычисления — процессы или потоки. В терминах операционной системы — это тоже вполне определенные (и разные) вещи. По-этому, давайте придерживаться терминологии.

Грузить бигдата целиком в память — ну такое себе решение. Это сейчас 400 мегабайт, а если данных на пару гигов? Срипт даже не запустится. Выше верно подсказали про стримы, а там уже можно и все остальное наворачивать.
Зависит от задачи. У меня под некоторые задачи есть вот такой сервер:
$ cat /proc/meminfo | grep MemTotal
MemTotal: 396269164 kB
Грузить бигдата целиком в память — ну такое себе решение.

Q: Мужики. Могу ли я загрузить текстовый файл в 5 миллионов строк в память?
A: А что за комп?
Q: Sun StarFire, 32 cpu, 128 Gb RAM
A: Тебе можно, валяй.
(с) ru_perl 90-е годы
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории