【发布时间】:2014-07-18 21:33:48
【问题描述】:
所以我需要创建一个每 24 小时运行一次并发送一些电子邮件的 cron 作业。我需要以某种方式做到这一点,只有服务器能够运行它,并且它需要在 CodeIgniter 中。
假设我将它放在名为cron.php 的控制器中,我该如何让它只有服务器才能执行它。到目前为止,我已经想过在构造函数中放置这样的东西:
if($_SERVER['SERVER_ADDR'] != $SERVER['REMOTE_ADDR']){
//kill the script, do not send emails
}
所以我的问题是,这似乎太简单了,这些值可以以某种方式被欺骗/操纵吗?很难做到吗?
有没有更好的方法来解决这个问题(不把它作为一个隐藏在公共网络根目录之外的独立程序?
【问题讨论】:
-
我们能确切地知道为什么只有服务器应该运行它吗?可能还有其他/更好的解决方案......
-
作为可能的方法之一,可以查看
$argc/$argv全局变量 -
@Salketer,因为我想设置它让服务器每 24 小时运行一次 cronjob。如果除了服务器本身之外的任何人都可以运行脚本,那么有人可以访问:example.com/cron,并执行发送电子邮件的脚本。
-
那么,最好的方法是在文件或数据库中使用时间戳。每次运行脚本时更新它,并确保仅在保存的时间戳是 24 小时前运行脚本。
-
这其实很聪明。即使有人要运行它,他们也只能每 24 小时运行一次。简单,但真的很棒。
标签: php codeigniter cron