Cron工作-如何防止重复发送通知?

当某个事件即将在一小时内发生时,我正在尝试发送通知。

出于测试目的,我目前使cron进程每分钟运行一次。但是我怀疑有更有效的方法来解决这个问题。

我试图避免跟踪通知,因此我试图建立一些逻辑以便可以在通知上获得一个触发器。

这是我当前的流程:

function webinar_starts_onehour() {

    // Get all lessons that are in future
    $today = time();
    $args = array(
        'post_type'   => 'lessons','post_status' => 'publish','posts_per_page' => -1,'meta_query' => array(
                                'key' => 'webinar_time','value' => $today,'compare' => '>='
                             )
    );
    $lessons = get_posts( $args );

    $notifications = get_notifications( 'webinar_starts_onehour' );

    // Foreach lesson
    foreach ( $lessons as $lesson ) {

        $webinar_time = strtotime($lesson->webinar_time);
        $difference = round(($webinar_time - $today) / 3600,2);

        if (($difference > .98) && ($difference < 1.017)) {
           // do something
        }
    }
}

所以我想做的是让它在不到一个小时或更长时间(即+-一分钟)的情况下触发。

我怀疑我的情况在某些情况下可以设置两次,因此尝试找出一种更可靠的方法来确保每分钟触发一次cron,这种情况只会触发一次。

想法?

如果您认为这确实不可靠(我知道这是事实),那么添加表来跟踪此类通知的实用方法是什么?我是否只需创建一个表,例如sent_notifications,其中将包含user_idnotification_idlesson_idstatus 然后检查此特定课程的通知是否成功以及发送失败的消息,请使用另一个cron继续尝试发送失败的消息?

谢谢, 布莱恩

snaketigger 回答:Cron工作-如何防止重复发送通知?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3135728.html

大家都在问