【问题标题】:Manually scheduling a cronjob in Magento for asynchronous execution在 Magento 中手动调度 cronjob 以进行异步执行
【发布时间】:2016-04-25 22:38:00
【问题描述】:

我开发了一个模块,用于将某些内部软件中的某些数据同步到我们的 Magento 安装。此任务通常需要几分钟,并且必须由用户根据需要启动,即不能通过配置将其安排为重复作业。

我认为最快和最简单的方法是我首先考虑的是使用套接字“伪造”它。也就是说,我有一个控制器操作,它通过 AJAX 请求调用,它只是打开/关闭一个套接字(即不等待响应)到另一个实际执行任务的控制器操作。第一个控制器操作可能会以“作业已排队”之类的消息进行响应。长时间运行的任务没有重要结果,但我可以轻松地将它们记录在某个地方,以便以后在需要时查看。

虽然我认为套接字方法可以正常工作,但鉴于 Magento 有一个 cron 实现,利用它是有意义的,但我似乎无法找到一种方法来以编程方式在 cron_schedule 表中安排作业即,没有一些 XML 配置。

这让我想到了一个问题:有没有办法在 Magento 的 cron 系统中“手动”安排一个任务,而不需要 a) 重复发生或 b) 需要使用 XML 配置?或者我最好为自己的工作实施我自己的cron.php 方法吗?

【问题讨论】:

  • 复制 cron.php 并对其进行自定义会达到相同的结果吗?听起来你需要在运行 cron 时加载 Mage,所以只需使用独立的 Magento 脚本并将其添加到你的 cron 调度程序中:stackoverflow.com/questions/28954182/…
  • @VladimirRamik 是的,如果我着手实现我自己的附加 cron/queue 系统,我会采取这种方法,我已经为各种其他应用程序做过。我想知道是否有可能利用 Magento 的内置 cron_schedule 表和相关机制,因为我认为这将是最干净的方法。由于我认为在单个应用程序中拥有两个独立但非常相似的 cron 服务有点令人困惑,如果我不能利用 Magento 的实现,我可能会继续使用套接字方法。

标签: php magento cron


【解决方案1】:

我的解决方案是编写我自己的 cron/task 调度程序(也有类似的库),通过我自己的数据库表进行管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2017-01-11
    • 2023-03-04
    相关资源
    最近更新 更多