Intereting Posts
Получить скрытое входное значение из базы данных после выбора формы Использовать временную метку Unix в методе времени доктрины Тема электронной почты, сокращенная в CodeIgniter Лучший способ включения представлений в представлениях в CodeIgniter Сгенерировать один и тот же тип формы на одной странице несколько раз Symfony2 Предварительная обработка Javascript перед загрузкой на клиентскую машину Обрезаемая фатальная ошибка: объект класса stdClass не может быть преобразован в строку в … после попытки вставить в базу данных Таблица MySQL, заполняющая один dropdown. После выбора, выпадающее второе выселение Фильтр поиска продолжался Yii многостраничный мастер форм Рекомендации по доступу к зарегистрированному объекту пользователя из других классов PHP: лучший способ переместить данные с сервера на клиентов …? PHP – getimagesize () перенаправление не работает как веб-сайты делают это index.php? something = somepage Удаление HTML из результата jQuery load ()

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

Я запланировал задание CRON каждые 4 часа, которое должно собирать данные учетных записей пользователей. Теперь я хочу ускорить работу и разделить работу между несколькими процессами и использовать один процесс для обновления базы данных MySQL с извлеченными данными из других процессов.

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

как это сделать в PHP?

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

спасибо

Related of "Пул потоков PHP?"

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

В самом деле, гораздо проще запустить несколько экземпляров сценария (с некоторым параметром для разделения данных) из cron, а не инициировать вилку из PHP-кода, – и не беспокоить любое узкое место для записи данных обратно в базу данных ,

C.

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

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

Если вы все еще хотите сделать это в PHP, вам может понадобиться посмотреть:

http://www.php.net/pcntl

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

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

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

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

С уважением,

Чеч эти сообщения – * http://www.alternateinterior.com/2007/05/multi-threading-strategies-in-php.html * http://www.electrictoolbox.com/article/php/process-forking/

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

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

КСТАТИ. этот скрипт работает дольше 4 часов? В противном случае я не вижу причин, с помощью которых это затрудняет управление потоками или процессами.

Вы также можете проверить эту статью, которая показывает, как имитировать потоки, включая диспетчер пулов потоков, используя асинхронные HTTP-вызовы и веб-сервер:

http://w-shadow.com/blog/2008/05/24/improved-thread-simulation-class-for-php/

Хороший пул процессов Arbow on github