【发布时间】:2010-04-19 10:40:51
【问题描述】:
有没有办法在 cron 中添加一个 php 脚本(文件),以便每十分钟或在预定的时间运行这个脚本?
因为我希望用户能够安排何时将简报发送到他选择的大量电子邮件。
所以我必须从 php 创建一个 cron 作业,以便在该预定时间运行一个 php 文件。
如果你有一个共享的虚拟主机环境(不是 vps),这可能吗
【问题讨论】:
标签: php cron web-hosting
有没有办法在 cron 中添加一个 php 脚本(文件),以便每十分钟或在预定的时间运行这个脚本?
因为我希望用户能够安排何时将简报发送到他选择的大量电子邮件。
所以我必须从 php 创建一个 cron 作业,以便在该预定时间运行一个 php 文件。
如果你有一个共享的虚拟主机环境(不是 vps),这可能吗
【问题讨论】:
标签: php cron web-hosting
如果你的脚本文件名是 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
【讨论】:
我的建议是不要允许 Apache 调用的 PHP 脚本更改 cron。上面写满了灾难。通常 cron 设置为需要 root 权限。这可以改变,但关键是,如果您的网站确实被黑客入侵,那么让攻击者能够修改您的 cron 可能真的很糟糕。
更重要的是,这不是必需的。您所做的只是选择一些粒度,比如每分钟、5 分钟或 10 分钟。您对用户说,他们可以将其安排到该级别。从每个月到每 5 分钟给他们一些选项。无论他们选择什么,都将其写入数据库。
然后每 1、5 或 10 分钟运行一个不同的 PHP 脚本(无论最小粒度是多少),并让它查看数据库以查看是否有任何东西要运行、执行或发送。
【讨论】:
是的,这是可能的,但在共享主机上,它会影响您以及该主机上的其他网站。
因此,如果您的文件不经常被 cron 调用,那么可以将 cron 放在共享主机上,但是如果您必须经常调用它,那么这是不可取的,您也可以被您的提供商扔掉,因为没有人想要由于其他网站,该网站表现不佳。
【讨论】: