PHP-запрос "в фоновом режиме" - PullRequest
2 голосов
/ 21 июля 2011

Есть ли способ сделать запрос PHP, когда пользователю не нужно ждать ответа? Какой-то "php запрос в фоновом режиме"?

Например, если приложению необходимо отправить 100 электронных писем, потому что пользователь отправил что-то, я не хочу показывать «отправка ... пожалуйста, подождите» для этого пользователя, но я хочу, чтобы какой-то другой скрипт выполнял работу независимо от других. от этого пользователя ...

Ответы [ 5 ]

6 голосов
/ 21 июля 2011

Опции:

  1. Вставьте дб (или файл) и используйте крон для опроса ( проще всего, поскольку вы, вероятно, уже используете дб ).
  2. Используйте что-то вроде RabbitMQ или ØMQ ( мой любимый )
  3. Создайте отдельный процесс, чтобы сделать это с помощью fork / exec ( не рекомендовал бы ).
  4. Как и другие предлагали - подделать его с помощью Ajax-запроса.Жизнеспособный - но я нахожу это уродливым.
3 голосов
/ 21 июля 2011

Вы можете отправить запрос в Ajax таким образом, чтобы пользовательский интерфейс не зависал и задача выполнялась на сервере?

1 голос
/ 21 июля 2011

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

0 голосов
/ 21 июля 2011

Создайте процедуру php для фактической работы по отправке электронных писем и звоните по http GET, используя описанную здесь технику .

0 голосов
/ 21 июля 2011
exec('php script.php > /dev/null & echo $!', $o);

Вы также можете использовать php-cli вместо php.Приведенная выше команда возвращает идентификатор процесса фонового скрипта в $ o [0], так что вы можете настроить что-либо, чтобы опрашивать его с помощью ajax или somethig, если вы хотите показать пользователю, что он прогрессирует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...