PHP: Как запустить процесс отдельно от основного процесса - PullRequest
0 голосов
/ 02 апреля 2012

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

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

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

0 голосов
/ 04 апреля 2012

Изучите использование очереди, такой как Mseven's Queue Plugin:

Msevens Queue Plugin

Или, если вы хотите более основанную на демоне работу, посмотрите на Beanstalkd.Плагин очереди mseven довольно понятен.Держитесь подальше от процессов разветвления, используя &, он может выйти из-под контроля.

0 голосов
/ 02 апреля 2012

Вы можете воспользоваться дешевым и простым маршрутом exec, запустив процесс с & в командной строке, что приведет к его фоновой обработке. Тем не менее, это дает вам небольшой контроль / статус.

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

...