Страница 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: Да, я понимаю как все печально))