如何使用PHP SDK在特定时间向不同时区发送FB通知?

如何使用PHP SDK在特定时间向不同时区发送FB通知?,php,facebook,Php,Facebook,我的网站在FB上大量转载。只有FB登录,所有与会员的交流都通过facebook进行。使用FB api通知用户他们关心的站点活动。用户可以在三个选项中进行选择: 从不通知 每天通知一次(对于MVP版本,我对硬编码时间很在行,比如说,在moorning中为9,但可能是为了让用户能够选择何时通知过去24小时内发生的一切) 随时通知 第一个和第三个都很简单,我关心的是第二个选择。基本上它类似于时事通讯。到目前为止,我对这一过程的看法如下: 当用户关心的某个操作发生时,有关该操作的通知会保存在数据库中

我的网站在FB上大量转载。只有FB登录,所有与会员的交流都通过facebook进行。使用FB api通知用户他们关心的站点活动。用户可以在三个选项中进行选择:

  • 从不通知
  • 每天通知一次(对于MVP版本,我对硬编码时间很在行,比如说,在moorning中为9,但可能是为了让用户能够选择何时通知过去24小时内发生的一切)
  • 随时通知
  • 第一个和第三个都很简单,我关心的是第二个选择。基本上它类似于时事通讯。到目前为止,我对这一过程的看法如下:

    • 当用户关心的某个操作发生时,有关该操作的通知会保存在数据库中
    • 如果用户在计划时间之前登录站点,则通知标记为已读
    • 若用户在预定时间之前未登录站点,则未读通知将包含在cron作业中
    • cron作业每小时运行一次。它将用户时区与当前时间相匹配,以便只有处于唤醒状态的用户才会收到通知。用户将获得基本的“站点中有新事物”通知
    问题:从FB我只能得到整数的偏移量,而不是实际的时区。我花了一些时间阅读有关时区和不同格式的内容,我突然想到FB调用以获得偏移量中的时区结果

    向不同的时区发送newletter(在我的例子中是通知)很复杂,但是有很多好的资源可用。然而,最好的方法似乎是将用户时区保存为TZ数据库格式
    America/New_York
    。所以我的问题是双重的

  • 是否有可能从facebook获得TZ中的用户时区
  • 如果不是,我最好的行动是什么?重要的是,我不在乎用户是否在准确的时间收到通知。我的意思是我不在乎夏天的时差。如果用户可以在上午、下午和晚上之间进行选择(例如,如果他选择了上午,那么他将在9:00+/-1小时内收到通知),这是可以的。我对想法持开放态度,在给定的时间点上,我的主要目标是让MVP运行起来
  • 您可以从open graph api获取用户时区

    要将偏移量转换为实际时区,请参见此处的答案:

    $ch = curl_init("https://graph.facebook.com/v2.6/" . $user_id . "?fields=timezone&access_token=" . $fb_access_token);
    curl_setopt_array($ch, array(
        CURLOPT_RETURNTRANSFER => 1
    ));
    
    $result = curl_exec($ch);