Пул потоков PHP?

Я запланировал задание КРОНА для выполнения каждые 4 часа который потребности собрать информацию учетных записей пользователей. Теперь я хочу ускорить вещи и разделить работу между несколькими процессами и использовать один процесс для обновления MySQL DB с полученными данными из других процессов.

В JAVA я знаю, что существует пул потоков, который я могу выделить некоторые потоки для выполнения некоторой работы.

как я делаю это в PHP?

Любой совет приветствуется.

Благодарность

6
задан embedded 7 April 2010 в 11:48
поделиться

5 ответов

Как уже говорили другие, разветвление процессов проще, чем порождение потоков с помощью PHP.Но почему вы думаете, что наличие одного выделенного потока для записи результатов обратно в базу данных - хорошая идея? Хотя это немного проще сделать с потоками, а не с процессами, это все еще сложный накладной расход, который, кажется, не добавляет никакой ценности к общей цели.

Действительно, намного проще запустить несколько экземпляров скрипта (с некоторым параметром для разделения данных) из cron, чем инициировать форк из кода PHP - и не беспокоиться о каких-либо узких местах для записи данных обратно в базу данных.

С.

1
ответ дан 10 December 2019 в 00:36
поделиться

Вы также можете разветвить новые процессы в PHP: pcntl_fork ()

Кстати. этот сценарий работает дольше 4 часов? В противном случае я не вижу причин, чтобы усложнять это управлением потоками или процессами.

0
ответ дан 10 December 2019 в 00:36
поделиться

PHP, вероятно, не самый подходящий язык для многопоточности.

Вы можете попробовать другие решения. Например, Thrift позволяет вам взаимодействовать между интерфейсом PHP и сервером Java, где вы можете легко реализовать желаемое поведение.

Если вы все еще хотите сделать это в PHP, вы можете взглянуть на:

http://www.php.net/pcntl

http://www.electrictoolbox.com/article / php / process-forking /

6
ответ дан 10 December 2019 в 00:36
поделиться

Проверьте эти посты - * http://www.alternateinterior.com/2007/05/multi-threading-strategies-in-php.html * http://www.electrictoolbox.com/article/php/process-forking/

В основном вам нужно обмениваться данными между процессами, и, как я вижу, вам, вероятно, нужно сначала записать в какой-то файл. Получение данных с помощью основного процесса (сделайте его процессом типа ajax-polling) и запись в DB.

0
ответ дан 10 December 2019 в 00:36
поделиться

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

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

Как описано другими, «это машина распределенного разветвления», которая может предложить распределение рабочей нагрузки, которое вы ищете, чтобы «ускорить процесс».

с уважением,

2
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: