作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
具体来说,我正在做的是在我的 AppServiceProvider->boot() 方法中,我正在创建一个如下所示的单例类:
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
$this->app->singleton('App\Support\PushNotificationHelper', function ($app) {
return new PushNotificationHelper();
});
}
}
我用于将通知推送到移动应用程序的队列 worker 作业需要辅助类。当移动设备是 Apple 设备时,我需要建立一个 curl 连接并让该连接在队列 worker 作业的生命周期内持续存在。这就是为什么我使用单例来保持连接,例如:
class PushNotificationHelper {
protected $http2Connection;
protected $http2Expire ;
public function getConnection($options) {
$this->http2Connection = curl_init();
curl_setopt_array($this->http2Connection, $options);
return $this->http2Connection;
}
Apple 声称如果我反复连接和断开连接,他们将发出拒绝服务 (DOS)。我的应用程序实际上每小时发送 1000 条通知。当我使用连接时,我会检查错误并在需要时关闭/重新打开连接,例如:
curl_close($http2Connection);
但是我想知道如何检测应用程序何时会永久关闭,以便我可以优雅地关闭连接。如果没有办法做到这一点,随着时间的推移,如果应用程序每天启动/停止几次,它会通过保持打开的连接挂起来损害我的服务器吗?
另一个选项可能是有一个 curl 选项来告诉连接在很长一段时间后自动断开连接。 (我强制关闭并每 4 小时重新打开一次)所以如果我能告诉连接至少 5 小时后自动关闭,那么它可能会自动清洁?
最佳答案
恕我直言,您可以尝试向您的应用实例添加一个终止回调,例如在 AppServiceProvider
中,即:
public function boot()
{
$this->app->terminating(function () {
// your terminating code here
});
}
关于laravel - Laravel 应用程序关闭时会触发什么事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095711/
我创建了一个分支来开发新功能。由于这个新功能完全是作为一个新项目开发的,唯一可能的冲突来源是解决方案文件。 随着功能的开发,主分支更新了几次。当我完成开发和测试时,我做了: git checkout
我是一名优秀的程序员,十分优秀!