当某个事件即将在一小时内发生时,我正在尝试发送通知。
出于测试目的,我目前使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_id
,notification_id
,lesson_id
,status
然后检查此特定课程的通知是否成功以及发送失败的消息,请使用另一个cron继续尝试发送失败的消息?
谢谢, 布莱恩