Как использовать php pcntl_fork для запуска функции в фоновом режиме

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

Я использовал php pcntl_fork следующим образом:

$pid = pcntl_fork();
switch ($pid) {
case -1:
$this->function_background();
$this->function_return();
exit();
case 0:
$this->function_background();
break;
default:
$this->function_return();
}

В этом случае он возвращает ошибку базы данных № 2006, которая может возникнуть только в function_background(),

Я хочу функцию function_background() работать полностью и независимо в фоновом режиме с подключением mysql и не беспокоить браузер ошибками или чем-либо еще. А также function_return() для сообщения в браузер.

Ценю любую помощь. Замечательно, если кто-нибудь может также указать мне подробную информацию.

Благодарю.

0

Решение

Как и в комментарии, pcnt_fork () используется для разветвления существующего процесса, для запуска в фоновом режиме вы можете просто реализовать что-то, используя:

$pid = shell_exec(sprintf('%s > /dev/null 2>&1 &', $command));

где:

  • > / dev / null означает, что стандартный вывод будет отброшен;
  • 2>&1 означает, что stderr будет на stdout (поэтому отбрасывается);
  • & позволяет запустить эту команду в качестве фоновой задачи.

и для проверки, что процесс работает

$procResult = shell_exec(sprintf('ps %d', $pid));
if (count(preg_split("/\n/", $procResult)) > 2) {

return true;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]