【问题标题】:Using cron manager from within PHP在 PHP 中使用 cron 管理器
【发布时间】:2011-02-18 16:00:22
【问题描述】:

我想在我的 php 应用程序中添加一个部分来添加/删除计划任务。

类似于他们在 vBulletin 论坛中使用的东西。

有没有人知道他们使用什么?他们是在使用 cron 作业,还是有一些自定义的工作。

谁能指导我如何完成类似的事情,基本上我只想让我的脚本添加或删除 cron 作业/计划任务。

我不想使用,例如 cPanel Cron 界面,我想在我的脚本中完成此操作。

非常感谢任何帮助。

【问题讨论】:

    标签: php cron


    【解决方案1】:

    这是我的解决方案 :-)

    命令行示例:

    bin/cronman --enable /var/www/myproject/.cronfile --user www-data
    

    点击了解更多:php-crontab-manager

    【讨论】:

      【解决方案2】:

      这是一个 PHP crontab 类:

      http://www.kavoir.com/2011/10/php-crontab-class-to-add-and-remove-cron-jobs.html

      使用这些方法添加、编辑或删除 cron 作业。

      【讨论】:

        【解决方案3】:

        如果您没有启用exec() 功能,则必须依靠通过某个界面手动设置至少一个 cron 作业,然后在脚本中管理各个作业。

        例如我做的是这个

        1. 我有一个脚本heartbeat.php 每分钟执行一次
        2. 此脚本检查 MySQL 表 crontab 并检查是否有任何行(作业)与 time_to_process <= NOW()
        3. 如果有,它会从crontab 表中加载为特定行定义的类
        4. 该类实现了一个带有run()方法的接口,我只调用$cronJob->run()使其运行
        5. 该类在完成后通过crontab 表处理其重新安排

        一个很好的例子是重置某些项目的每日浏览量。 作业安排在 2010 年 5 月 1 日 00:00。作业运行后,它会自动安排第二天的工作。
        然后,您可以在 PHP 中实现失败作业的自动重置和许多其他功能。

        【讨论】:

        • 非常感谢 :) 这几乎是我所需要的,虽然我不想触摸 cPanel 的 cron 界面,但我认为最好的解决方案是做类似于你所说的事情;但与其先手动创建 cron,不如在用户执行对页面的请求时从网站页面中调用该 cron-manger 脚本。我想我现在确定 vBulletin 也不使用 cron ——因为为此他们也必须依赖在我的主机上禁用的 exec() ,但 vbulletin 仍然可以使用这些调度程序的全部功能。
        【解决方案4】:

        我相信 vBulletin “伪造” cron 工作。任何访问该页面的用户都会执行代码来检查是否需要运行任何任务。

        但是,如果没有用户访问该网站,则不会执行任何 cron 作业,该方法 100% 依赖于页面浏览量。

        另外,为了防止在页面渲染后执行 cron 作业的用户延迟页面渲染。

        再说一次,这正是我认为正在发生的事情,我自己还没有看过代码。

        希望这会有所帮助。

        【讨论】:

        • 即使它 100% 依赖于页面浏览量,您也可以随时安排一个 cronjob 每分钟访问该网站.....
        【解决方案5】:

        http://ryanfaerman.com/php-crontab-manager/

        是一个 php 类,可让您使用类从 PHP 访问 crontab。

        【讨论】:

        • 正如链接帖子所说,cron 的行为可能因机器而异。如果您的 php 脚本以用户 'apache' 身份运行,那么您必须确保该用户被允许使用 crontab,这涉及定位 cron.deny 和 cron.allow 文件。 'man crontab'(如果你有 shell 访问权限)可以告诉你在哪里可以找到这些文件以及它们是如何被解释的......但是,如果你要打包你的代码以便在未知环境中部署,你可能想要'假装它'就像进化的答案一样。
        • @grossvogel 我使用了这个库 php-corntab-manager 但我收到内部服务器错误,有没有其他方法可以从 php 脚本调用启动或停止 cron 作业
        猜你喜欢
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 2019-12-02
        • 2013-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-26
        相关资源
        最近更新 更多