是否有可能在网站/网络服务器(具有完全root访问权限)上运行在后台调用mysql查询的PHP脚本。我的意思是:
用户单击以处理某些内容 - 但是为了防止用户等待运行查询,它应该看起来像是为用户完成的 - 他不必在浏览器中等待PHP / MYSQL 但是,脚本应该在服务器上运行并完成
我该怎么做?如果PHP中没有有效的解决方案 - 是否可以使用其他语言?
我不是在谈论cron工作 - 我在ubuntu机器上(没有窗户)
将在后台运行许多PHP脚本(所有相同的) - Nginx是更好的解决方案还是Apache?它甚至是相关的吗?
答案 0 :(得分:4)
我在这里推荐的最佳架构可能是队列/工作人员设置。例如,这与Gearman(或者:ØMQ,RabbitMQ或类似的高级队列)相比很简单。你启动了一些在后台运行并可以处理数据库查询的工作人员(我部分地使用supervisord对它们进行守护)。尽可能多地调整并支持并行运行;因为这项工作显然有点费力,所以你要小心控制正在运行的工人数量。然后,只要您需要运行此作业,就可以为Gearman工作人员启动asynchronous job,然后立即返回给您的用户。工作人员无论何时到处都会处理请求。这假设您不需要为用户提供任何特定的反馈,只要没有任何人需要立即知道,工作就可以完成。
如果做需要在作业完成时提供用户反馈,您可能只想尝试通过AJAX执行请求。对于非常复杂的设置和实时反馈,您可以使用Gearman方法,通过pub/sub websocket提供反馈。这是一个非常复杂的设置。