yii - 使用我的作品时使用 IronWorkers

标签 yii cron amazon-elastic-beanstalk iron.io ironworker

我的网站托管在 AWS Elastic Beanstalk (PHP) 上。我使用 Yii Framework 作为 MVC。

不久前我想每天运行一个 SQL 查询。我查了一下如何在 Beanstalk 上运行 cron,合并 Cloud 和 Cron 的概念似乎很复杂。我遇到了 Iron Worker ( http://www.iron.io/worker ),并设法创建了一个当前正在正常工作的 worker 。

今天我想运行一个更复杂的 cron(在我的数据库中查找通知,决定是否发送电子邮件,构建电子邮件模板并发送电子邮件(通过 AWS SES)。

据我了解,工作人员文件应该是独立的项目,包含工作所需的一切。 然而,我投入了大量的时间和精力来构建我的 MVC。我有复杂的模型、验证、电子邮件模板引擎等...... 用我所做的工作来创造一个钢铁 worker 似乎非常困难。即使我设法将所有代码移植到工作人员(这似乎需要大量工作),这也意味着每当我对主代码进行更改时,我都需要确保工作人员也进行了这些更改。这意味着我将拥有我的代码的“分支”。如果我想在未来创造更多的 worker ,就更是如此。

正确的做法是什么?

最佳答案

短期内,您可能只使用 IronWorker 中的调度功能,并让工作线程访问应用程序中的端点。然后,端点将触发操作在您的应用环境中运行。

从长远来看,我们确实建议您更多地关注面向服务的方法,从而将应用程序分解为更加松散耦合和分布式。这是关于该主题的帖子。优点很多,尤其是在可扩展性和开发敏捷性方面。

https://blog.heroku.com/archives/2013/12/3/end_monolithic_app

您还可以查看此 YII 添加内容。

http://www.yiiframework.com/extension/yiiron/

当然不希望您不必要地重写您的应用程序,但您可能可以在某些领域寻求解耦。建议创建一个工作人员目录并努力将工作人员编写为独立的。通过这种方式,您可以在不同的环境中运行它们,并将有效负载传递给工作人员。 (推送队列也可用于推送到这些工作人员。)一旦习惯了分布式异步处理,这是一个非常容易管理的过程。

(注:我在 Iron.io 工作)

关于yii - 使用我的作品时使用 IronWorkers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709724/

相关文章:

php - Upstart 的 Yii 控制台给我错误

php - 多表时如何进行Yii基于角色的访问控制

php - 如何在 PHP 中从多维对象创建数组?

php - 如何在 wp cron 函数中使用 woocommerce 新的 CRUD setters 和 getters 方法?

amazon-web-services - Elastic Beanstalk 环境停留在灰色健康状态

amazon-web-services - Amazon ElasticBeanStalk Worker Tier 无法连接到 SQS

php - yiic - 无法运行 - env : php\r: No such file or directory

c# - 在特定时间清空表并且仅一次(每天)

python - 在 Docker 中运行 python cronjob 时缺少环境变量

amazon-web-services - 如何使用 CLI 为 Elastic Beanstalk 配置 VPC