Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 399 353 раза!

Форум

Добро пожаловать, Гость!

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

Вопросы по работе с Apache, Nginx, PHP, MySQL, Sendmail и т.д.
pifagor2
Сообщения: 4
C нами: 8 мес 6 дней

Непрочитанное сообщение pifagor2 » 09 апр 2017, 19:21

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

pifagor2
Сообщения: 4
C нами: 8 мес 6 дней

Непрочитанное сообщение pifagor2 » 10 апр 2017, 10:26

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

Аватара пользователя
Asmodey
Сообщения: 336
C нами: 5 лет 7 мес
Контакты:

Непрочитанное сообщение Asmodey » 10 апр 2017, 13:54

Круто!

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

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

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

pifagor2
Сообщения: 4
C нами: 8 мес 6 дней

Непрочитанное сообщение pifagor2 » 10 апр 2017, 15:27

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

Аватара пользователя
Asmodey
Сообщения: 336
C нами: 5 лет 7 мес
Контакты:

Непрочитанное сообщение Asmodey » 10 апр 2017, 21:34

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

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

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

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

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

pifagor2
Сообщения: 4
C нами: 8 мес 6 дней

Непрочитанное сообщение pifagor2 » 11 апр 2017, 11:13

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


Вернуться в «Модули и инструменты»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость