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