Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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,然后在执行完成后使用php删除该cron作业_Php_Linux_Cron_Twilio - Fatal编程技术网

使用特定时间后运行的参数设置cron,然后在执行完成后使用php删除该cron作业

使用特定时间后运行的参数设置cron,然后在执行完成后使用php删除该cron作业,php,linux,cron,twilio,Php,Linux,Cron,Twilio,我正在开发TwilioAPI。我想在其中执行一个文件,该文件说明您的呼叫订阅在会议通话期间还有最后2分钟 所以我有剩余的用户时间,比如说210秒。我必须将当前电话会议的ConferenceSid传递给cron文件一个参数 此文件仅在电话会议开始后的特定时间(例如88秒后)执行。因此,我必须设置在88秒会议呼叫启动后运行的cron,并在执行完成后删除动态创建的作业 对于cron作业集,我使用以下crontab类。这是我正在尝试的代码 $path = dirname(__FILE__); $cron

我正在开发TwilioAPI。我想在其中执行一个文件,该文件说明您的呼叫订阅在会议通话期间还有最后2分钟

所以我有剩余的用户时间,比如说210秒。我必须将当前电话会议的ConferenceSid传递给cron文件一个参数

此文件仅在电话会议开始后的特定时间(例如88秒后)执行。因此,我必须设置在88秒会议呼叫启动后运行的cron,并在执行完成后删除动态创建的作业

对于cron作业集,我使用以下crontab类。这是我正在尝试的代码

$path = dirname(__FILE__);
$cron = $path . "/test.php ConferenceSid=".$_REQUEST['ConferenceSid'];
Crontab::addJob('*/1 * * * * php '.$cron);
Crontab::removeJob('*/1 * * * * php '.$cron);
我不知道如何传递参数,所以文件在88秒后执行

这是我的Crontab类,它是从另一个堆栈溢出答案中找到的

class Crontab {

    static private function stringToArray($jobs = '') {
        $array = explode("\r\n", trim($jobs)); // trim() gets rid of the last \r\n
        foreach ($array as $key => $item) {
            if ($item == '') {
                unset($array[$key]);
            }
        }
        return $array;
    }

    static private function arrayToString($jobs = array()) {
        $string = implode("\r\n", $jobs);
        return $string;
    }

    static public function getJobs() {
        $output = shell_exec('crontab -l');
        return self::stringToArray($output);
    }

    static public function saveJobs($jobs = array()) {
        $output = shell_exec('echo "' . self::arrayToString($jobs) . '" | crontab -');
        return $output;
    }

    static public function doesJobExist($job = '') {
        $jobs = self::getJobs();
        if (in_array($job, $jobs)) {
            return true;
        } else {
            return false;
        }
    }

    static public function addJob($job = '') {
        if (self::doesJobExist($job)) {
            return false;
        } else {
            $jobs = self::getJobs();
            $jobs[] = $job;
            return self::saveJobs($jobs);
        }
    }

    static public function removeJob($job = '') {
        if (self::doesJobExist($job)) {
            $jobs = self::getJobs();
            unset($jobs[array_search($job, $jobs)]);
            return self::saveJobs($jobs);
        } else {
            return false;
        }
     }
}

您可以放弃cron方法,让脚本以如下方式启动:

sleep($numberOfSeconds)

您只需要以不会阻塞主程序的方式调用脚本。请参见

您可以放弃cron方法,让脚本以如下方式启动:

sleep($numberOfSeconds)
您只需要以不会阻塞主程序的方式调用脚本。请参见

我将使用而不是cron。它被设计为只执行一次命令

如果您需要秒精度,您可以将其与
sleep
一起使用,因此您可以在现在+833分钟运行
,而不是
sleep(50000)
,我将使用
sleep(20)
而不是cron。它被设计为只执行一次命令


如果您需要秒精度,可以将其与
sleep
一起使用,因此您可以在现在+833分钟
sleep(20)
运行
,而不是
sleep(50000)
,是的,我知道该睡眠功能,但如果我需要使用sleep(50000)或更长的秒数,它会影响CPU性能吗?如果一个文件一次运行不止一次呢?它独立执行?嗯,脚本是加载和运行的,所以它必须使用一些CPU和RAM,但据我所知,是的,我知道睡眠功能,但如果我需要使用睡眠(50000)或更长的时间,它会影响CPU性能吗?如果一个文件一次运行不止一次呢?它独立执行?嗯,脚本是加载和运行的,因此它必须使用一些CPU和RAM,但据我所知,它是最小的