
Artem
05.02.2017
10:50:03
разрывали циклы руками

Sergey
05.02.2017
10:50:20
это был риторический вопрос)

Artem
05.02.2017
10:51:12
но ведь на него есть вполне однозначный ответ :)

Sergey
05.02.2017
10:52:36
когда был 5.2 люди особо не парились по поводу текущей памяти

Google

Sergey
05.02.2017
10:52:44
это 2006 или 2007й вроде был

Sergey
05.02.2017
10:53:07
эх... верните мой 2007-ой
я тогда первые скриптики писал...

Artem
05.02.2017
10:53:23
кто парился, тот делал явный unset() в нужных местах и всё было хорошо
но в основном, конечно, всем было пофиг. Особенно с учётом фреймворков тех дней. Это сейчас на каждый get создаётся миллион объектов, которые тут же убиваются

Eugene
05.02.2017
11:36:54
поправьте если что не так
ставлю nginx
ставлю cgi сервер какой-нибудь
ставлю php ts, настраиваю его на вебсервер
ставлю php nts, ставлю pthreads, настраиваю

Sergey
05.02.2017
11:40:28
> ставлю cgi сервер какой-нибудь
php-fpm
> ставлю php nts, ставлю pthreads, настраиваю
php-cli ts
thead-safe

Eugene
05.02.2017
11:46:07
в требованиях к pthreads, вроде, написано, компилить с опцией non thread safe

Sergey
05.02.2017
11:50:20
> pthreads requires a build of PHP with ZTS (Zend Thread Safety) enabled ( --enable-maintainer-zts or --enable-zts on Windows )

Eugene
05.02.2017
11:53:52
сорри, что-то попутал
nginx->php-fpm->php ts->php-cli ts


Sergey
05.02.2017
11:55:13
в требованиях к pthreads, вроде, написано, компилить с опцией non thread safe
я еще раз поясню почему "pthreads не нужны" в большинсве случаев:
- Родить поток чуть дешевле чем родить процесс но все так же дорого. Более того, есть такая вещь как переключение контекста и количество потоков сильно больше количества ядер будут убивать производительность. Насколько сильно - зависит от эффективности кода. А потому вместо того что бы постоянно создавать потоки тебе всеравно нужен будет демон, который будет держать пул потоков.
- Исходя из предыдущего профит относительно нескольких процессов воркеров лишь в том, что чуть проще организовывать коммуникации и синхронизации. В целом же в большинстве случаев у тебя потоки будут выполнять какую-то работу и отдавать результат. При этом им не нужна доп. синхронизация или обмен информацией между потоками (разве что кэш но это чуть другое).
- то есть в 99% случаев выгоднее будет завести очередь (beanstalkd например) и много обработчиков которые постоянно будут висеть в памяти ну или pub/sub организовать между процессами.

Google

Sergey
05.02.2017
11:56:03
- если твоя задача - оптимизировать работу с подсистемами ввода/вывода (надо распаралелить работу с базой, надо распаралелить работу с http) есть асинхронные API (с базой данных посложнее но например для mysql оно есть) и event loop. Это наиболее эффективный вариант. Особенно в совокупности с очередями и пулом процессов-воркеров.

F01134H
05.02.2017
12:00:16
нихрена себе Сергей разошелся)

Vadim
05.02.2017
12:06:31
Тут еще тогда вопрос в том, что хочешь распараллелить, может оно вообще не нужно тебе?)

Eugene
05.02.2017
12:07:09
попробую воспользоваться аллегорией
на склад завезли фуру консервов в коробках
каждую коробку надо забрать, отнести, распаковать, разложить, проверить и т.д.
изложите процесс, как вы его видите

Vadim
05.02.2017
12:08:07
И как бы сэкономит тебе 20мс на рассчеты, но добавит 30мс на хождения грубо говоря

Sergey
05.02.2017
12:10:10
очереди + демоны масштабируются как минимум лучше

Vadim
05.02.2017
12:10:32
Это кстати да

Eugene
05.02.2017
12:15:55
прислали мне, скажем 1000 id групп vk
по каждой группе надо собрать пользователей, как минимум
появление списка я отслеживаю через event loop
для каждой группы создаю процесс, ограничивая, скажем по 15 шт одновременно?

Sergey
05.02.2017
12:17:54
запихиваешь все эти группы в очередь и разбираешь консьюмерами

Sergey
05.02.2017
12:17:59
+1

Sergey
05.02.2017
12:18:07
там где курл, можно еще и батчами запросы отправлять

Eugene
05.02.2017
12:25:35
я програмирую всего несколько месяцев, и поэтому не знаком со многими технологиями, про которые вы говорите

Sergey
05.02.2017
12:27:47
работаю разрабом уже 9 лет, и поверь. если тебе нужна многопоточность или реальная асинхронность, то лучше брать для этого подходящие инструменты - java, nodejs, go. на пхп с этим сложно и не стоит стрелять по ногам

F01134H
05.02.2017
12:29:27
Да уж, простая истина
Для новичка советовал бы golang

Sergey
05.02.2017
12:30:35
на пхп либо ивент луп и упороться в 1 ядро, либо делить на процессы консьюмерами и очередями
дебажить потоки на пхп это должно быть забавно

Eugene
05.02.2017
12:33:24
не хочу сильно отрываться от рабочих стандартов ) пока, но хочу свои задачи покодить
потоки дебажатся нормально ) уже проверено
про очереди можно подробнее?
отправил человек с сайта get запрос со списком ссылок, что должно дальше с этим списком произойти
дома просто решил в виртуалке поднять среду разработки, сижу, компоненты сервера выбираю, нюансы выясняю

Sergey
05.02.2017
12:45:07
>отправил человек с сайта get запрос со списком ссылок, что должно дальше с этим списком произойти
а что с ним должно произойти? просто выбрать из вк все что есть по этим ссылкам?

Google

Sergey
05.02.2017
12:45:40
http://docs.guzzlephp.org/en/latest/quickstart.html#concurrent-requests

Vadim
05.02.2017
12:47:21
Ты столкнешься с ограничением апи ВК, который не даст тебе просто так взять и сделать 1к параллельных запросов
Там тоже есть некий батч вроде

Eugene
05.02.2017
12:47:44
нееет, сейчас я каждую ссылку в отдельный поток пихаю, очередь организую как раз не больше чем 15 объектов одновременно
vk это для примера

Vadim
05.02.2017
12:48:31
Ну так, в отрыве от реальной задаче тогда хз как что-то подсказывать

Eugene
05.02.2017
12:48:49
у нас очень хороший ведущий программист ) но он не любит, когда я ему вопросы задаю не связанные с работотой

Vadim
05.02.2017
12:49:00
Если кругом аллегории, да потоки в вакууме

Eugene
05.02.2017
12:49:08
аналогия очень точная

Vadim
05.02.2017
12:49:44
А если набор данных очень мал, то проще не оверинженерить и тупо его перебрать
Очень мал - до 10к элементов например, в зависимости от

Eugene
05.02.2017
12:51:22
на выходе получается список на несколько миллионов строк

Eugene
05.02.2017
12:52:10
в процессе обработки каждой ссылки по несколько десятков http запросов

Vadim
05.02.2017
12:52:19
Сколько оно в один поток у тебя разгребается?
Наверное много)

Eugene
05.02.2017
12:52:58
я не проверял, при мне все уже в потоках было

F01134H
05.02.2017
13:01:21
Народ, а что есть issue в гите?
эт норма?

Vadim
05.02.2017
13:11:24
Просто название ветки ж

Google

Владимир
05.02.2017
13:14:07
пилят фичу/фиксят баг - ветку с кодом называют с номером фичи/бага, так легче найти описание, например, или подгрузить куда-нить автомтически

Fayozjon [CybernatiC]
05.02.2017
13:21:01

Sergey
05.02.2017
13:40:48
лучше называть %номер-задачи%-%имя фичи%
а то теряться будешь)

Vadim
05.02.2017
13:47:10
Если не делать больше 3 задач одновременно, то норм)

Pavel
05.02.2017
14:26:36
https://twitter.com/benmatselby/status/828177649390456832
Интересно.
https://twitter.com/s_bergmann/status/828185078635311104

Sergey
05.02.2017
14:36:36
хм, надо проверить тоже

Admin
ERROR: S client not available

Eugene
05.02.2017
15:44:05
тут GO упоминали, расскажите, плиз, про производительность его

Sergey
05.02.2017
15:45:06
кимпилируемый язык, микротреды

Eugene
05.02.2017
15:45:25
очень красноречиво )

Sergey
05.02.2017
15:45:31
ну а что ты еще хочешь?)
https://benchmarksgame.alioth.debian.org/u64q/go.html
go vs java
go vs c++
http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=gpp
вот писькомерки
выводы делай сам

Google

Eugene
05.02.2017
15:46:30
цифры ) затраты памяти на одинаковые задачи ) а то я не нашел как-то сравнений толковых в google

Sergey
05.02.2017
15:47:11
ну вот я тебе скинул ссылку

Eugene
05.02.2017
15:47:45
там php нет (

Sergey
05.02.2017
15:48:37
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=php

Eugene
05.02.2017
15:50:24
спасибо )
а есть online обучалки по нему?

Timur
05.02.2017
16:25:33
golang-book.com
Через час или около того будешь уже прогать на Go.
tour.golang.org — потом вот это читать. Чуть посложнее, но тоже быстро и легко читается.

Sergey
05.02.2017
16:30:36
крутой учебничек)
пойду учить go

Vadim
05.02.2017
16:37:11
В мире умерло минимум 2 пхпшника ?

Sheridan
05.02.2017
16:45:01

Fayozjon [CybernatiC]
05.02.2017
16:46:59
А есть оффлайн версия?

Sergey
05.02.2017
16:50:38

F01134H
05.02.2017
16:50:51
в яндексе вон некоторые отделы на голанг перевели, не меняя работников

Timur
05.02.2017
16:51:31
Да, язык очень простой.

Fayozjon [CybernatiC]
05.02.2017
16:51:43
В удаленных уголках галлактики где вафля не несет силу и свет приходится скучать и читать состав освежителя