Я создаю веб-приложение с помощью пехлеви, здесь я создаю интерфейс из того, где Усера может послать электронное письмо больше чем одному пользователю (пользователю), и он работает превосходный, но он замедляет время выполнения, из-за которого Усера ожидают слишком много "подтвержденного ответа" (который покажет после того, как электронные письма отправили.)
В Java существуют "Потоки", которыми мы можем выполнить, та задача (пошлите электронные письма), и это не замедляет остальных приложение.
Есть ли любая техника в PHP/Zend точно так же, как в Java, на который мы можем разделить наши задачи, которые могли занять время, например: отправка электронных писем.
РЕДАКТИРОВАТЬ (спасибо @Efazati, похоже, в этом направлении есть новые разработки)
http://php.net/manual/en/book.pthreads.php
Внимание: (из здесь внизу):
pthreads был и остается экспериментом с довольно хорошими результатами. Любые его ограничения или функции могут измениться в любое время; [...]
/ EDIT
В PHP нет потоков!
Обходной путь состоит в том, чтобы сохранять задания в очереди (скажем, строки в таблице с электронными письмами) и иметь задание cron для вызова вашего php-скрипта с заданным интервалом (скажем, 2 минуты) и опроса о вакансиях. Когда представлены вакансии, получите несколько (в зависимости от тайм-аута установки вашего php) и отправьте электронные письма.
Основная идея для отсрочки выполнения:
Подсказки:
Вы можете использовать систему очередей для отправки электронной почты и отправлять электронную почту из другой системы, которая поддерживает потоки. PHP - это всего лишь инструмент, и вам следует выбрать тот инструмент, который лучше всего подходит для вашей работы.
PHP не включает многопоточность как часть языка, есть несколько методов которые могут его подражать, но они не надежны.
Этот поиск Google показывает несколько возможных обходных путей
Начиная с PHP, в нем нет потоков. Однако для php вы можете взглянуть на этот обходной путь http://www.alternateinterior.com/2007/05/multi-threading-strategies-in-php.html
Остерегайтесь выполнение вилок для процесса Apache. Вы можете проявить поведение, которого не ожидаете. Если вы хотите выполнить какое-либо асинхронное выполнение, это должно быть через какой-то механизм очередей. Gearman один из них. Очередь заданий Zend Server - это еще один. У меня есть демонстрационный код на . Вы в очереди? Введение в очередь заданий сервера Zend . Cron можно использовать, но вы столкнетесь с проблемой зависимости от вашего планировщика cron для выполнения задач, тогда как асинхронные вычисления часто необходимо запускать немедленно. Использование системы очередей позволяет делать это без многопоточности.
Вы можете изучить возможность использования нескольких процессов, например, с помощью fork . Взаимодействие между ними не будет таким простым, как с потоками (но тогда оно не будет иметь всех подводных камней), но если вы просто отправляете электронные письма, возможно, вам не придется много общаться, если все.
Существует pcntl , который позволяет создавать подпроцессы, но php не очень хорошо работает для такой архитектуры. . Вам, вероятно, лучше создать долго работающий скрипт (демон) и порождать их несколько.