Страница 1 из 1

после установки модуля pthreads сайты не отображаются

Добавлено: 09 апр 2017, 19:21
pifagor2
Мне очень необходимо использовать потоки, потому с большим трудом,но все же установил pthreads. Но после установки сервер не работает в браузере, даже конфигурацию не показывает - пустые страницы. Теперь работает только через консоль, со всеми текущими.
Кто-то уже отписывался о данной проблеме, неужели это никак нерешаемо?
Версия PHP 7.0 x64 + Apache. С Nginx то же самое.
Дело в том что это ведь не особенность расширения - на ютюбе есть ролик где человек гоняет pthreads через xampp и страница отображается.
Прошу помощи, спасибо!

Re: после установки модуля pthreads сайты не отображаются

Добавлено: 10 апр 2017, 10:26
pifagor2
Исходя из официальных источников, pthreads не работает ни с одним SAPI кроме CLI. Буду думать можно ли вывести html в браузер через CLI...

Re: после установки модуля pthreads сайты не отображаются

Добавлено: 10 апр 2017, 13:54
Asmodey
Круто!

1. Вот пришёл запрос на вэб-сервер.
2. Он породил экземпляр php. Наплодил там переменных каких надо.
3. Скормил php скрипт.
4. Скрипт отработал.
5. Отдал страничку.
6. Вэб-сервер прибил php. Отдал результат клиенту.

Вы предлагаете на 4 этапе заводить консольного php. С новым скриптом который будет ветвиться. Передавать ему какие-то параметры. Синхронизировать все потоки. Отдавать ответ вызвавшему.

Не сильно мудрёно получается?

Re: после установки модуля pthreads сайты не отображаются

Добавлено: 10 апр 2017, 15:27
pifagor2
Мудрено, но что делать. Если есть какие-то более легкие пути - с удовольствием бы их рассмотрел.
Стоит задача рассчитать многомерные массивы данных, получаемые с разных серверов в максимальной короткий срок. Multi curl позволил намного быстрее получать данные. Но теперь время выполнения упирается в их обработку, которая занимает полторы минуты. При этом проц не загружен, так что думаю разбить задачу на потоки, пусть каждый поток обработает и вернет отдельную часть.

Re: после установки модуля pthreads сайты не отображаются

Добавлено: 10 апр 2017, 21:34
Asmodey
Это не совсем управляемо.
Приплыл один запрос, разветвился на 10 потоков/процессов и посчитался быстренько. Приплыло 100 и растопырилось.

Отделять клиента и исполнителя через какую-либо систему очереди сообщений. Это добавляет асинхронность (клиент не ждёт долго ответ) и гетерогенность (разные куски на разных ЯП, ОС, машинах...) на уровне приложения.

Т.е. со стороны вэб-сервера заводятся задачи, складываются и быстро возвращается ответ. С другого конца дробилка получает задачи (может дробить их и обратно складывать), решает и складывает ответы.
Клиент в это время может до посинения запрашивать статус задачи или ждать :)

Диапазон от велосипедов на кроне, редисе...

ЗЫ. Попробуйте распараллелить вычисления, если выхлоп порядок, вестимо и не стоит заморачиваться дальше ;)

Re: после установки модуля pthreads сайты не отображаются

Добавлено: 11 апр 2017, 11:13
pifagor2
Если вы подразумеваете fork(), то это, к сожалению, неосуществимо, так как возникает строгая надобность работы сервера в среде Windows, где расширения pcntl не работают(.
P.S: Да, я понимаю как все печально))