Долго запускать PHP-скрипт, даже если браузер закрыт - PullRequest
1 голос
/ 31 августа 2011

Я работаю над проектом Payroll с использованием фреймворка Symfony. у нас есть 27000 сотрудников для обработки каждый месяц. когда мы выполняем процесс расчета заработной платы сотрудника, мы не можем зависеть от запроса браузера, так как это длительный процесс и время ожидания сервера. В качестве обходного пути нам нравится выполнять php-скрипт из фона на linux-сервере. тогда даже браузер закрыл скрипты, можно извинить фон.

Как лучше всего выполнить эту задачу, пожалуйста, помогите

Подробнее

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

1011 * привет *

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Для запуска в фоновом режиме выполните следующие действия:

  1. Оберните вашу команду php в сценарий оболочки:

**

#!/usr/bin/bash
# set up environment variables, PATH etc. here
php  /home/yourapp/yourscript.php

**

  1. Код веб-страницы / php-скрипт для запроса запуска.

  2. В скрипте нужна строка:

    system ('/ home / yourapp / yourscript.sh> scriptlog.txt &'

  3. Возможно, вам нужна дополнительная ссылка для просмотра файла "scriptlog.txt" из Интернета.

1 голос
/ 31 августа 2011

Существуют разные способы решения этой проблемы.

Первый способ - это запустить команду оболочки startinan в фоновом режиме (и с использованием nohup, если хотите), начиная с вашего PHP-кода. Это почти то же самое, что и первый ответ на повторяющийся вопрос.

Второй способ - использовать функцию PHP PCNTL . Используя PCNTL, вы можете создавать дочерние процессы, которые выполняются в фоновом режиме. Таким образом, можно сделать fork и вернуть пользователю: «Процесс расчета зарплаты запущен - вы получите письмо, если система будет готова».

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