【问题标题】:PHP/Symfony: Create Application Context for Cron/TaskPHP/Symfony:为 Cron/Task 创建应用程序上下文
【发布时间】:2012-05-25 13:39:09
【问题描述】:

我有一个较长的操作,我无法再从 UI 运行,因为它超过了最大执行时间和内存限制。我很清楚如何在表中设置任务,并让 cron 执行 sfTask 来完成待处理的任务。

谁能告诉我以下信息:

  1. 哪个是最好的 PHP/Symfony 插件来管理作业/任务? 我没有使用 Zend,看到 sfTaskLoggerPluginsfGearmanPluginsfJobQueuePlugin 最近没有更新。
  2. 如何创建上下文并使应用程序配置、设置等可用于任务?
  3. 如何将参数添加到方法可以读取的上下文中,以识别它们是否已被 cron/task 或 HTTP 请求调用?

感谢所有输入。

PS: 推荐了Long script in admin, task in Symfony? 和其他一些人:)

【问题讨论】:

    标签: php symfony1 symfony-1.4 connection-timeout cron-task


    【解决方案1】:

    我认为您需要的大部分内容都包含在标准文档中。

    http://www.symfony-project.org/cookbook/1_2/en/tasks

    我经常通过脚本使用 Symfony 任务,这些脚本通过 cron 作业进行切换。我通过命令行使用环境切换,就像文档讨论的那样。我也使用参数传递。

    Symfony 任务非常强大,可以从 CLI 为您提供所需的一切,以便进入您的应用程序并执行您需要的内容。

    如果您在阅读文档后有更具体的问题,请将其发布,我们会尽力为您解答。

    【讨论】:

    • 谢谢老哥,我试试看。有没有办法告诉我的函数它正在任务中运行? (针对 HTTP 请求)
    • 我还可以在上下文中设置当前用户吗?模拟正在为用户运行的任务?
    • 两者都是。您可以为您的任务和查询上下文创建自己的环境,以获取环境名称并在您的函数中使用它。当然你也可以给它传递一个参数。在执行任务时,您可以访问任何您想要的内容。如果您愿意,您可以从 sfGuardUser 中提取用户对象。
    • 谢谢。我遵循您的方法,但可能需要一些帮助。我试图通过 $context->getUser()->signIn($guard_user, true); 登录用户但出现错误:注意:未定义索引:第 158 行的 symfapp\plugins\sfDoctrineGuardPlugin\lib\user\sfGuardSecurityUser.class.php 中的 REMOTE_ADDR - 可能是它试图从 $Server 读取的地方。在上下文中设置用户的出路是什么?我应该通过 $context->factories['user'] 设置它吗?我会绕过一些逻辑吗?
    猜你喜欢
    • 2023-03-25
    • 2011-12-11
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2015-07-05
    • 1970-01-01
    相关资源
    最近更新 更多