Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
21 / 21 / 5
Регистрация: 26.12.2013
Сообщений: 177

Многопоточность PHP

12.11.2016, 18:29. Показов 1445. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Цель:
- многопоточность
- максимальная производительность
- без дополнительных модулей

В общем, я хочу выделить в отдельный поток (потоки) работу с базой данных в бесконечно работающим скрипте, по возможности без использования лишних модулей.

В одной статье видел, что stream_socket вроде как работает в потоках. Его можно использовать для реализации многопоточности запуская отдельные скрипты, которые занимаются обработкой запросов к базе данных. Но, насколько я понимаю работу PHP, это значительная нагрузка на сервер.

Если я не прав по поводу stream_socket, то в принципе идея запуска нескольких скриптов, помимо основного, сработает как многопоточность и если да, как это повлияет на производительность?

Еще можно использовать модуль PECL. И по поводу него тоже вопрос, он создает настоящие потоки, или это лишь имитация?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.11.2016, 18:29
Ответы с готовыми решениями:

Многопоточность в PHP. Как проверить процесс?
Запускаю некоторое количество процессов, записываю их в массив. Далее начинаю их проверять. Для этого существует цикл, в теле которого...

Многопоточность PHP
Добрый день. Поставили задачу написать скрипт почтовой рассылки на php. windows. Рассылку реализую с помощью phpmailer(). Необходимо,...

Многопоточность на php
Доброго времени суток уважаемые форумчане. Есть задача максимально быстро выполнить однотипные действия с данными. Есть для этого VPS....

4
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
13.11.2016, 10:01
Цитата Сообщение от sashok991 Посмотреть сообщение
в принципе идея запуска нескольких скриптов, помимо основного, сработает как многопоточность
В принципе да.
Цитата Сообщение от sashok991 Посмотреть сообщение
как это повлияет на производительность?
Смотря солько их будет и как будут связываться между собой. Но не думаю что сильно повлияет.
Цитата Сообщение от sashok991 Посмотреть сообщение
Еще можно использовать модуль PECL. И по поводу него тоже вопрос, он создает настоящие потоки, или это лишь имитация?
PECL это репозиторий модулей для PHP. Сам по себе он никакой многопоточности не обеспечивает. Обеспечивать ее могут конкретные модули.

Если Вы про pthread, то почитайте - http://php.net/manual/ru/intro.pthreads.php

И вообще про все возможности/функции языка php лучше читать на php.net в первую очередь, а не в "каких-то там статьях".
1
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
15.11.2016, 17:46
А зачем? В целях обучения или какая-то прикладная задача?

Цитата Сообщение от sashok991 Посмотреть сообщение
В общем, я хочу выделить в отдельный поток (потоки) работу с базой данных в бесконечно работающим скрипте, по возможности без использования лишних модулей.

В одной статье видел, что stream_socket вроде как работает в потоках. Его можно использовать для реализации многопоточности запуская отдельные скрипты, которые занимаются обработкой запросов к базе данных. Но, насколько я понимаю работу PHP, это значительная нагрузка на сервер.

Если я не прав по поводу stream_socket, то в принципе идея запуска нескольких скриптов, помимо основного, сработает как многопоточность и если да, как это повлияет на производительность?
На производительность повлияет отрицательно. Скрипт1 вместо ожидания данных из БД будет так же ждать их из скрипта2, который в свою очередь будет ждать их из БД. Плюс потели на коммуникациях между 2мя скриптами. А если со скриптом2 (который работает с бд) захотят работать ещё скрипты - то образуется гигантская очередь.

Цитата Сообщение от sashok991 Посмотреть сообщение
Еще можно использовать модуль PECL. И по поводу него тоже вопрос, он создает настоящие потоки, или это лишь имитация?
Вроде как обещают честные потоки.
0
21 / 21 / 5
Регистрация: 26.12.2013
Сообщений: 177
16.11.2016, 09:54  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
Если Вы про pthread, то почитайте - http://php.net/manual/ru/intro.pthreads.php
Да, именно это я и имел в виду. Поскольку скрипт будет работать под юникс и на отдельном сервере (не на хостинге), я все же решил использовать pthread, но как вариант, буду иметь в ввиду запуск нескольких скриптов.
Цитата Сообщение от andr-xw Посмотреть сообщение
А зачем? В целях обучения или какая-то прикладная задача?
Отчасти в целях обучения PHP, но надеюсь довести проект до продакшина.
Цитата Сообщение от andr-xw Посмотреть сообщение
Скрипт1 вместо ожидания данных из БД будет так же ждать их из скрипта2, который в свою очередь будет ждать их из БД.
Вовсе нет. Поскольку это вечный скрипт, не каждый запрос от клиента требует обращения к базе данных. И ждать ответа не нужно, логичнее проверять, есть ответ на определенный запрос или еще нету.
0
123 / 77 / 33
Регистрация: 05.03.2013
Сообщений: 449
16.11.2016, 10:13
Посмотри в сторону ReactPHP.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2016, 10:13
Помогаю со студенческими работами здесь

Асинхронные запросы, многопоточность PHP
Есть websocket сервер, к которому подключается несколько клиентов. От каждого может исходить несколько запросов в секунду. Все это...

многопоточность
есть скрипт, который выполняет одинаковые действия для каждого id, этот id передается через get, т.е. process.php?id=1 ...

Многопоточность
Добрый день. Столкнулся с интересной задачей. Заказчику нужно организовать многопоточность средствами php. Логика работы скрипта...

Многопоточность
Есть онлайн генератор sitemap.xml. Как его научить работать с несколькими пользователями одновременно? Т.е. чтобы одновременно происходило...

многопоточность
сделал определенный запрос по базе - поиск и запись найденного результата в другое поле, скрипт работает долго но при этом процессор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru