【问题标题】:add php script in cron for scheduled task from php?在 cron 中为来自 php 的计划任务添加 php 脚本?
【发布时间】:2010-04-19 10:40:51
【问题描述】:

有没有办法在 cron 中添加一个 php 脚本(文件),以便每十分钟或在预定的时间运行这个脚本?

因为我希望用户能够安排何时将简报发送到他选择的大量电子邮件。

所以我必须从 php 创建一个 cron 作业,以便在该预定时间运行一个 php 文件。

如果你有一个共享的虚拟主机环境(不是 vps),这可能吗

【问题讨论】:

    标签: php cron web-hosting


    【解决方案1】:

    如果你的脚本文件名是 news.php 并且在 /home/user/news.php crontab 行似乎是:

    * * * * * php /home/user/news.php
    

    如果你不想每分钟都运行它。 您可以从左开始编辑 * (m, h, dom, mon, dow)

    但如果你有相同的虚拟主机,你就不能这样做, 您必须有权访问 shell 或其他方式进行配置 您的 crobtab 文件(可能来自您的提供商访问面板)

    但是你可以通过 apache over http 协议在其他服务器上运行 crontab 作业来运行你的 news.php。在此选项中,您在远程服务器上的 crontab 作业必须通过 Web 运行您的脚本。例如。 wget 是一个不错的选择:

    * * * * * wget http://www.yourdomain.com/dir/news.php
    

    【讨论】:

      【解决方案2】:

      我的建议是不要允许 Apache 调用的 PHP 脚本更改 cron。上面写满了灾难。通常 cron 设置为需要 root 权限。这可以改变,但关键是,如果您的网站确实被黑客入侵,那么让攻击者能够修改您的 cron 可能真的很糟糕。

      更重要的是,这不是必需的。您所做的只是选择一些粒度,比如每分钟、5 分钟或 10 分钟。您对用户说,他们可以将其安排到该级别。从每个月到每 5 分钟给他们一些选项。无论他们选择什么,都将其写入数据库。

      然后每 1、5 或 10 分钟运行一个不同的 PHP 脚本(无论最小粒度是多少),并让它查看数据库以查看是否有任何东西要运行、执行或发送。

      【讨论】:

      • 用户可以编辑crontable,但每个用户都有独立的自己的crontable。
      • @Swisstack 是的,但这是您整个 Web 应用程序的一个用户(通常在 Linux 上为“nobody”)。
      【解决方案3】:

      是的,这是可能的,但在共享主机上,它会影响您以及该主机上的其他网站。

      因此,如果您的文件不经常被 cron 调用,那么可以将 cron 放在共享主机上,但是如果您必须经常调用它,那么这是不可取的,您也可以被您的提供商扔掉,因为没有人想要由于其他网站,该网站表现不佳。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-19
        • 1970-01-01
        • 2012-05-14
        • 2011-06-20
        • 2020-03-27
        • 1970-01-01
        • 2010-12-21
        • 2016-05-06
        相关资源
        最近更新 更多