Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有cron的情况下一天只运行10次php文件?_Php_Datetime_File Handling - Fatal编程技术网

如何在没有cron的情况下一天只运行10次php文件?

如何在没有cron的情况下一天只运行10次php文件?,php,datetime,file-handling,Php,Datetime,File Handling,我是新来的php,所以请注意,如果这是一个简单的问题。我有一个php脚本,我希望它每天只执行10次,而不是更多。我不想用cron来做这个。有没有办法只在php中实现这一点 现在,我已经设置了一个计数器,每次有人运行脚本时,计数器都会增加1,并且只循环10次。如果超过该值,则显示错误消息 function limit_run_times(){ $counter = 1; $file = 'counter.txt'; if(file_exists($file)){

我是新来的php,所以请注意,如果这是一个简单的问题。我有一个php脚本,我希望它每天只执行10次,而不是更多。我不想用cron来做这个。有没有办法只在php中实现这一点

现在,我已经设置了一个计数器,每次有人运行脚本时,计数器都会增加1,并且只循环10次。如果超过该值,则显示错误消息

function limit_run_times(){
    $counter = 1;
    $file = 'counter.txt';
    if(file_exists($file)){
         $counter += file_get_contents($file);
    }
    file_put_contents($file,$counter);
    if($counter > 11 ){
        die("limit is exceeded!");
    }
}


我需要一些有效的方法来做到这一点,因此每天只执行10次脚本,这适用于每天,即此计数器每天刷新到0,或者是否有其他有效的方法。

我建议您使用数据库,它更干净,维护更简单

但是,通过文件处理也可以实现。该文件的格式为
2019-05-15 1
(用制表符分隔,
\t
)。获取文件内容并按
explode()
拆分值。然后进行比较和检查,并相应地返回值

function limit\u run\u times(){
//变量声明
$fileName='my_log.txt';
$dailyllimit=10;
$content=file\u get\u contents($fileName);
$parts=分解(“\t”,$content);
$date=$parts[0];
$counter=$parts[1]+1;
//检查计数器-如果在该日期高于10,则返回false
如果($counter>$dailyLimit&&date(“Y-m-d”)==$date){
死亡(“超出每日执行限制($dailyLimit)!请明天再试。”);
}
//我们只有在每日限额不超过美元的情况下才能到达这里
//检查日期是否为今天,如果是,则将计数器增加1
//否则设置新日期并将计数器重置为1(现在执行)
如果(日期(“Y-m-d”)!==$date){
$counter=1;
$date=日期(“Y-m-d”);
}
文件内容($fileName,$date.\t.$counter);
返回true;
}

查看您的代码并像计算机一样进行检查,看看会发生什么。如果您想使用此代码,您可能需要考虑的是将计数器作为参数传递,因为在函数启动时将其设置为0是有问题的。我可以写入文件并在那里增加。但我不知道如何每天将其刷新回0。您可以编写一个包含2行的文件。第一行是日期,第二行是计数器。然后,当您读取文件时,如果它不是当前日期,请将计数器设置为零。或者您可以使用数据库,在表中插入带有日期的行。检查同一日期的条目不能超过10个。为什么不使用数据库,有什么特殊原因吗?在我看来,使用SQL比处理文件更好更简单。