Выполнять php процесс в фоне

421
03 февраля 2017, 07:26

Есть функция отправки sms уведомления на php, она выполняется около 3х секунд, иногда приходится делать рассылку сразу на несколько номеров, ожидание увеличивается пропорционально.

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

Процесс представляет собой функцию на php с двумя передаваемыми параметрами.

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

Answer 1

Нашел для себя 2 решения:

  1. exec("/usr/local/bin/php /usr/local/www/smssend.php ".$telnum." ".$text."> /dev/null 2>&1"); Как было подсказано в комментариях, выношу свою функцию в отдельный файл, который принимает 2 параметра и бросаю его выполнение на произвол судьбы Помимо команды на выполнение php файла я передаю еще 2 параметра через пробел, которые считываются в исполняемом файле как

    $telnum=$argv[1]; $text=$argv[2];

  2. Им я в итоге и воспользовался - сервер очередей, все не так сложно оказалось, как я думал, поставил gearman, в нем doBackground - отправляю процесс с параметрами в очередь и workerом очередь обрабатывается
READ ALSO
Doctrine query builder как указать поля связи в выборке

Doctrine query builder как указать поля связи в выборке

ЗдравствуйтеСтолкнулся с проблемой, как указать при выборке поля в query builder, которые являются связующими (в моём случае много ко многим)?

389
Мониторинг игрового сервера

Мониторинг игрового сервера

Нужен простой скрипт php скрипт для вывода информации с игрового сервера типа:

455
PHPExcel ошибка communication failure

PHPExcel ошибка communication failure

Как в phpexcel можно сослаться на определенный лист, чтобы использовать в формуле данные с него =СУММ('Part2'!P25:P29), то есть 'Part2' заменить?

366
Работа с MySQL в PHP

Работа с MySQL в PHP

Если я использую класс для работы с БД, я создаю новый объект этого класса, из которого вызываю функцию для выполнения запроса, я подключаюсь...

394