在我的应用中,用户可以一次上传多张照片。
服务器收到这些后,会发生以下情况:
虽然一切正常,但无法保证Gearman工作人员在数据库更新时已完成。这意味着如果用户访问向数据库查询这些图像的页面,则可能会损坏图像链接。
因此我需要做以下其中一项:
由于显而易见的原因,1号解决方案最有意义,但当然会有一个缺点,即可能导致用户上传图像之间出现延迟,并且他/她实际上能够在应用程序中查看它们。
因此,这实际上是2-3个问题:
如果我确实使用解决方案1,我需要能够访问主应用程序数据库类和memcached类的公共函数以及调用Gearman工作程序本身的函数类,所有这些都来自Gearman工人。
例如,在我执行MySQL PDO数据库查询的主应用程序中,我使用$query = new Query($sql);
然后绑定值并执行它等。在该文件的顶部我有use \App\Query
所以我可以访问这些公共功能。在其他情况下,我将从另一个函数中访问一个函数,但是使用self::functionToPerform();
在同一个类中.Gearman worker脚本在我的实际App外部,那么我将如何从worker中访问这些函数?
我知道从一个问题中可以提出很多问题,我希望我能够很好地阐述它。任何帮助真的很感激。
答案 0 :(得分:1)
实时上传/更新图片有多重要? 因为如果过程图像的时间是~10秒,用户可以看到关于此的通知。一旦图像就绪网页将被更新。
我认为图像处理工作者必须完成这项工作。您可以为数据库更新创建工作程序。它将是两种可以与消息队列通信的工作者(如RabbitMQ)。
上传过程将如下所示:
当然,如果我理解一个问题......