сделал так. пришлось сделать задержку в 5 секунд внутри php скрипта потому что systemd ругался что приходится слишком часто перезапускать процесс
[Unit]
After=network.target
Description=Runs worker
[Service]
ExecStart=/usr/bin/php7.0 /vagrant/www/public/deployer/app/cli.php
PIDFile=/vagrant/www/public/deployer/app/cli_bean.pid
TimeoutStopSec=300
Restart=always
[Install]
WantedBy=multi-user.target
Alias=bean.service
код задачи в cli фалкона
use Phalcon\Cli\Task;
class MainTask extends Task
{
public function mainAction()
{
$this->queue->watch('mail');
while ($this->queue->statsTube('mail')["current-jobs-ready"] > 0 && ($job = $this->queue->reserve())) {
$message = $job->getBody();
$mailer = $this->mailer->send($message['to'], $message['subject'] , $message['view'], $message['params']);
$job->delete();
}
$this->mailer->close();
sleep(5);
}
}
systemctl status
beanworker.service - Runs worker
Loaded: loaded (/etc/systemd/system/beanworker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-11-03 20:21:05 MSK; 1s ago
Main PID: 23075 (php7.0)
Tasks: 1
Memory: 9.4M
CPU: 87ms
CGroup: /system.slice/beanworker.service
└─23075 /usr/bin/php7.0 /vagrant/www/public/deployer/app/cli.php
Nov 03 20:21:05 vagrant systemd[1]: beanworker.service: Service hold-off time over, scheduling restart.
Nov 03 20:21:05 vagrant systemd[1]: Stopped Runs worker.
Nov 03 20:21:05 vagrant systemd[1]: Started Runs worker.
память съедает почти 10мб, а php memory_get_peak_usage выдает 2мб