我有一个php脚本,通过http读取一个文件(该文件在其他域上)。我想每天只阅读一次或两次此文件,而不是每次刷新网站时都连接到该文件。 除了使用cron还有其他方法吗? 我不想使用cron因为我更喜欢在脚本本身设置这种行为..因此它很灵活,所以我可以在任何地方使用它而无需每次都设置cron。 感谢
答案 0 :(得分:12)
过去,当我无法访问cron时,我做过这种事情:
$lastRunLog = '/path/to/lastrun.log';
if (file_exists($lastRunLog)) {
$lastRun = file_get_contents($lastRunLog);
if (time() - $lastRun >= 86400) {
//its been more than a day so run our external file
$cron = file_get_contents('http://example.com/external/file.php');
//update lastrun.log with current time
file_put_contents($lastRunLog, time());
}
}
答案 1 :(得分:7)
如果你不能或不想使用cron,只有在访问页面时才可以更新它。您可以缓存HTTP请求的结果,只有在缓存超过一天或您选择的任何时间间隔时,才会在页面上更新它以加载它。
答案 2 :(得分:3)
如果您想以定时间隔点击某个网站,也可以使用Web Based Cron。
答案 3 :(得分:2)
你甚至可以使用数据库表 - 结构,id,日期,脚本url以及你需要的任何东西都非常简单 - 并且每次运行脚本时都添加一行。
然后,在运行脚本之前,只需检查每天的行数。
答案 4 :(得分:1)
您可以使用Cronjob。然后,您可以通过命令行运行php脚本。
php /someplace/somefile.php
如果您每天更新,Cronjob将如下。
0 0 * 0 0 php /someplace/somefile.php
答案 5 :(得分:1)
由于您明确声明您不想使用cron,因此执行此操作的唯一方法(没有类似于cron的方法)是将脚本设置为守护程序。但是,除非你真的需要守护进程提供的灵活性,否则cron会更容易和简单。
这是一个daemon walk-through。
答案 6 :(得分:0)
如果您正在使用带有systemd的Linux发行版:
我需要安排基于年度的工作,独立于应用程序(如果系统重新启动或类似的事情),我得到了使用systemd Timers的建议。 Arch Wiki Page上有一些例子。
答案 7 :(得分:-1)
如果您使用的是* nix环境,则可以使用cron jobs
答案 8 :(得分:-1)
cron出了什么问题?
你有几个选择cron - 你的php可以通过命令行PHP解释器调用,或者你可以使用wget或fetch或等效的方法在服务器上调用你的PHP。
一般情况下,从Web服务器上下文中运行的PHP对执行时间有一个时间限制,所以一般情况下你不能设置“后台”PHP线程来“稍后”执行操作。