lundi 19 février 2018

Run process only if no process matching pattern exist - Linux - PHP - Laravel

I would like to run a process only if there are no matching processes running already. This is what I have:

  //get the processes that match artisan queue:work but not ps or grep processes
  exec('ps -ef | grep "[a]rtisan queue:work"', $output);

  //if no process if found start queue worker!
  if(empty($output)) {
      exec('/usr/local/bin/php /home/qwkhirec/laravel-dev/artisan queue:work --daemon');
  }

When I perform this on a test endpoint on my Laravel application the code works. When I schedule it on Laravel scheduler it creates one process after the other.

After some minutes my machine is filled with these processes running everyminute:

user  3128  2722  0 14:41 ?        00:00:00 /opt/cpanel/ea-php56/root/usr/bin/php /home/qwkhirec/laravel-dev/artisan queue:work --daemon
user  6347  6036  0 14:42 ?        00:00:00 /opt/cpanel/ea-php56/root/usr/bin/php /home/qwkhirec/laravel-dev/artisan queue:work --daemon
user  9896  9581  0 14:43 ?        00:00:00 /opt/cpanel/ea-php56/root/usr/bin/php /home/qwkhirec/laravel-dev/artisan queue:work --daemon
user 14095 13758  0 14:44 ?        00:00:00 /opt/cpanel/ea-php56/root/usr/bin/php /home/qwkhirec/laravel-dev/artisan queue:work --daemon
user 17921 17398  0 14:45 ?        00:00:00 /opt/cpanel/ea-php56/root/usr/bin/php /home/qwkhirec/laravel-dev/artisan queue:work --daemon
user 31538 30988  0 14:40 ?        00:00:00 /opt/cpanel/ea-php56/root/usr/bin/php /home/qwkhirec/laravel-dev/artisan queue:work --daemon



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire