如何在N天/小时后运行/调用函数

时间:2017-09-24 08:12:22

标签: php codeigniter

我想在N天或小时之后运行/调用一个函数,这个时间是可以更改的,我无法设置CRON作业。

例如:

one(1)
one(2)
one(24)

function one($hour)
 {

    call two(); function after $hour

 }


function two()
 {

    //do something

 }

有没有图书馆可以做到这一点?

2 个答案:

答案 0 :(得分:0)

在PHP脚本的顶部添加set_time_limit(0)以覆盖php.ini最大执行时间限制。

<?php
set_time_limit(0);

# Define your frequency
$days = 1; 
$hours = 1; 
$minutes = 1; 
$seconds = 1; 

# Convert inputs into seconds
$frequencySeconds = (
    ($days * 24 * 60 * 60)  +
    ($hours * 60 * 60)      +
    ($minutes * 60)         +
    ($seconds) 
);


$startTime = microtime(1);

while(1) {

    # Get current timestamp
    $timeNow = microtime(1);

    # Find out how much time elapsed
    $elapsedTime = $timeNow-$startTime;

    # Check that time has surpassed frequency
    if( $elapsedTime >= $frequencySeconds) {

        /* 
            insert your main code here 
        */

        # Update new start time
        $startTime += $frequencySeconds;

    }
}
?>

但是,请记住,由于浏览器HTTP超时和/或httpd.conf文件中定义的Apache服务器最大执行时间,脚本可能会结束。

答案 1 :(得分:0)

请你一份工作队列,这比cron工作更有效率。我已经将它实现为PHP codeigniter项目并已在生产中运行。

以下是实施的链接

https://lornajane.net/posts/2014/working-with-php-and-beanstalkd

https://github.com/davidpersson/beanstalk