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