Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel: Running queue:listen continuously on Windows Azure Web App

I feel a little bit silly for asking this question but I can't seem to find an answer on the internet for this problem. After searching for several hours I figured out that on a linux server you use Supervisor to run "php artisan queue:listen" (either with or without daemon) continuously on your website to handle jobs pushed to the queue. This is all well and good, but what if I want to do this on a Windows Azure web app? After searching around the solutions I found were:

  • Make a chron job to run "php artisan queue:listen" every minute (or every X minutes), I really dislike this solution and wanted to avoid it specially if the site gets more traffic;
  • Add a WebJob that runs "php artisan queue:listen" continuously (the problem here is I don't know how to write the script for the WebJob...);

I want to ask you guys for help on to know which of these is the correct solution, if there is a better one and if the WebJob is the best one how do I write the script for this? Thanks in advance.

like image 503
Tiago Magalhães Avatar asked Jun 09 '16 15:06

Tiago Magalhães


2 Answers

In short, Supervisor is a modern alternative to nohup (no hang up) with a few other bits and pieces tacked on. In short, there's other resources that can keep a task running in the background (daemon) and the solution I use for Windows based projects (very few tbh) is Forever which I discovered via: https://stackoverflow.com/a/18226392/5912664

C:\myprojectroot > forever -c php artisan queue:listen --queue=some_nice_queue --tries=3

How?

Install node for Windows, then with npm install Forever

C:\myprojectroot > npm install -g forever

If you're stuck for getting Node running on Windows, I recommend the Windows Package Manager, Chocolatey

https://chocolatey.org/packages?q=node

Be sure to check for any logfiles that Forever creates, as I had left one long enough to consume 30Gb of disk space!

like image 173
Justin Origin Broadband Avatar answered Oct 08 '22 03:10

Justin Origin Broadband


For Azure you can make a new webjob to your web app, and upload a .cmd file including a command like this.

php %HOME%\site\wwwroot\artisan queue:work --daemon

and defining that as a triguered and 0 * * * * * frequency cron.

that way work for me.

best.

like image 30
Ernesto Lugo Avatar answered Oct 08 '22 03:10

Ernesto Lugo