As you create your project, I ran into a problem - there are some user actions that can last up to several minutes. It is clear that forcing the user to wait until such long requests to the server are executed is unallowable! And then I came to the conclusion that you need to organize a queue of tasks so that the user clicks the link, a task is formed on the server, and the user is only displayed the process of performing the task.
Even sketched a sign in the database, but the solution was not universal. The created task queue can only execute shell scripts, but I would like to teach it to perform PHP logic, and so that the results of both cases are added to the database.
I heard about RabbitMQ, Apache Message Queue, but it seems to me that they are too redundant for my case. I need to do some checks on the server (the method of executing PHP code would be just useful here, and depending on the result, the tasks would continue, or not), and manipulate the accounting files, and simply "heavy" files.
Where it was possible to read how to organize such things? Can anyone come across this already, and find a solution?
The project is created on the basis of the framework Yii.
python
there is acelery
for this. And here is how to work with it from php: PHP client for Celery - Konstantin Pavlovsky