我有一个symfony 3应用。当您上传一个CSV文件时,它会发出请求API,并为您准备好新的CSV文件。完全完成了。但是此过程可能需要1到10个小时。因此,当有人开始此过程时,他将无法进行其他操作。例如,siteurl.com / process在进入该页面后无法执行siteurl.com/dashboard,因此已经执行了此过程。仪表板页面等待过程完成。
所以我有一个主意,就是有人启动该过程时,该过程将在后台运行,完成后将其发送给电子邮件,就像我们进行转移一样。
我在项目中添加了rabbitmq。有人开始了该过程,即在rabbitmq上使用上传的文件路径创建一个新队列。但是之后,我需要阅读并开始该过程。我创建了reader.php来接收RabbitMQ的消息并进行处理。当我在CLI上启动reader.php时,它可以正常工作,并且不会像仪表板一样阻塞其他页面。但是如何在消息写入rabbitmq之后启动reader.php。当我尝试像shell_exec“ php reader.php”一样,它再次阻止了其他页面。
我应该怎么做?