Php 构建用于向pushover API发送通知的队列

Php 构建用于向pushover API发送通知的队列,php,cakephp,cakephp-3.0,cakephp-3.x,pushover,Php,Cakephp,Cakephp 3.0,Cakephp 3.x,Pushover,我建立了一个小网站,用户可以通过pushover()向其他用户发送通知 除了pushover()之外的限制外,一切正常: “不要向我们的API发送超过2个并发HTTP请求(TCP连接)……要加速多个请求,您可以使用HTTP keep alive在同一TCP连接上按顺序发送每个请求,以避免新TCP连接和SSL协商的开销。不要每5秒重试同一请求一次以上……” 据我所知,我必须在5秒内发送不到2条消息,对吗?但在我的情况下,我有时每秒大约有4-5条消息。有人知道如何做到“HTTP保持活力”——让它继续

我建立了一个小网站,用户可以通过pushover()向其他用户发送通知

除了pushover()之外的限制外,一切正常:

“不要向我们的API发送超过2个并发HTTP请求(TCP连接)……要加速多个请求,您可以使用HTTP keep alive在同一TCP连接上按顺序发送每个请求,以避免新TCP连接和SSL协商的开销。不要每5秒重试同一请求一次以上……”

据我所知,我必须在5秒内发送不到2条消息,对吗?但在我的情况下,我有时每秒大约有4-5条消息。有人知道如何做到“HTTP保持活力”——让它继续运行吗

对于发送,我实际上使用了Chris Schalenborgh的“php pushover”

我的方法如下所示:

function alertSend($title, $message, $participants, $account){
    $timestamp = time();
    $datum = date("d.m.Y - H:i", $timestamp);
    $pushover = new Pushover();
    $pushover->setToken($account->alerts);
    $pushover->setUser($account->usertoken);
    $devices = validateUser($account->alerts, $account->usertoken, $account->verify);
    foreach($participants as $user){
        if (strpos($devices, $user) !== false) {
            $final .= $user.",";
        }
    }
    if(!empty($final)){
        $pushover->setDevice($final);
        $pushover->setPriority('1');
        $pushover->setExpire('300');
        $pushover->setRetry('30');
        $pushover->setTitle($title);
        $pushover->setMessage($message);

        if(isset($final)){
            $final = '';
        }
    }
}
在我看来,一般来说没有失败


我希望任何人都能找到解决这个问题的答案。

我看不到任何东西在5秒钟内发出的信息不超过2条。您不应该在5秒钟之前重试一条消息,但“2”限制与并发消息相关——这意味着同时并行发送。您遇到的实际问题是什么?问题是,如果im在一分钟内发送iE 5条消息,则不会发生错误,但当每秒发送1条消息时(发送10条消息),只有4-5条消息到达用户。(对不起,我的英语糟透了。)你所描述的不是问题,而是问题的结果。不要每秒发送超过2条消息!您需要标记最后一条消息的发送时间,并等待至少500毫秒后再发送新消息。这是最简单的解决方案,否则您需要深入研究curl选项,看看是否有可能
保持请求的活动状态
并从PHP/curl中重用它。我没有看到任何东西在5秒内显示不超过2条消息。您不应该在5秒钟之前重试一条消息,但“2”限制与并发消息相关——这意味着同时并行发送。您遇到的实际问题是什么?问题是,如果im在一分钟内发送iE 5条消息,则不会发生错误,但当每秒发送1条消息时(发送10条消息),只有4-5条消息到达用户。(对不起,我的英语糟透了。)你所描述的不是问题,而是问题的结果。不要每秒发送超过2条消息!您需要标记最后一条消息的发送时间,并等待至少500毫秒后再发送新消息。这是最简单的解决方案,否则您需要深入研究curl选项,看看是否有可能保持请求的活动状态,并从PHP/curl重用它。