计划的php代码执行

计划的php代码执行,php,codeigniter,scheduled-tasks,Php,Codeigniter,Scheduled Tasks,大家好,我的理解是,cron可以通过启动php解释器并将要执行的脚本的路径传递给它来执行php代码 我想安排的代码在codeigniter控制器/模型中。因此,控制器基本上包含3个函数,它们执行一些db统计。每个功能都有自己的时间表 如何保护该控制器,使代码不会被恶意执行?作为cron工作的一部分,我是否向控制器传递一些信任?或者我应该将该代码设置为一个单独的ci应用程序 对此事如有任何意见,将不胜感激 谢谢您始终可以将文件移动到web目录之外,因此您只能从服务器端访问它。另一种方法是更改文件的

大家好,我的理解是,cron可以通过启动php解释器并将要执行的脚本的路径传递给它来执行php代码

我想安排的代码在codeigniter控制器/模型中。因此,控制器基本上包含3个函数,它们执行一些db统计。每个功能都有自己的时间表

如何保护该控制器,使代码不会被恶意执行?作为cron工作的一部分,我是否向控制器传递一些信任?或者我应该将该代码设置为一个单独的ci应用程序

对此事如有任何意见,将不胜感激


谢谢

您始终可以将文件移动到web目录之外,因此您只能从服务器端访问它。另一种方法是更改文件的权限,使服务器无法读取该文件,并在root下执行cron(不推荐)

至于credis,只有在传递正确的get变量时,才能使脚本运行。例如,脚本仅在调用以下命令时运行:

http://localhost/script.php?chjfbbhjscu4iu793673vhjdvhjdbjvbdh=bugy34gruhw3d78gyfhjbryufgbcgherbciube

不应创建用于执行脚本的控制器。您只需创建一个普通PHP脚本,并通过命令行/cron启动它

脚本不应该在您的公共web目录中,它应该在其他地方(例如在
脚本
文件夹中),公众无法访问(脚本不应该是网页


因为如果你有一个脚本作为控制器,这意味着你可以通过HTTP服务器访问脚本,而HTTP服务器是不安全的,在你的cron任务中,你必须使用类似于
wget“localhost/mycontroller/myaction”
(不太干净)。

我认为查询的想法实际上没有那么糟糕,特别是如果这个URL是通过防火墙在您自己的网络上传递的,那么就没有真正的理由担心了


您可以实现的另一个安全功能是确保“客户端”的请求IP地址等于服务器的IP地址,因此,只有从执行控制器操作的服务器调用脚本时,脚本才能继续执行。

您可以在此处找到更多答案:GET变量是个坏主意,你不应该依靠如此低的安全性来阻止任何人启动你的脚本。事实上,你的脚本根本不应该作为网页访问,它是一个脚本。我只是给出了不止一个选项,这是所有选项中最差的,但有时更难移动脚本。你强调的问题是我的问题的原因,我的想法是通过@colm建议的信誉。正如我前面提到的,代码放在控制器中的原因是为了让生活变得简单,并使用CI类。@djeetee我知道我的最后一段对你的问题有点多余。。。我强调,尽管这一解决方案需要更多的时间,但它是值得的。