Laravel 应用程序关闭时会触发什么事件?

2023-12-14

具体来说,我正在做的是在我的 AppServiceProvider->boot() 方法中,我正在创建一个单例类,如下所示:

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->app->singleton('App\Support\PushNotificationHelper', function ($app) {
            return new PushNotificationHelper();
        });  
     }
 }

我用于将通知推送到移动应用程序的队列工作人员作业需要帮助程序类。当移动设备是 Apple 设备时,我需要建立一个卷曲连接,并让该连接在队列工作线程作业的生命周期之外持续存在。这就是为什么我使用单例来保持连接,如下所示:

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, i.e.:

public function boot()
{
    $this->app->terminating(function () {
       // your terminating code here
    });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 应用程序关闭时会触发什么事件? 的相关文章

随机推荐

  • 如何在 Propel 中使用 MySQL 函数

    我想选择 1 个月或更晚的记录 查询是 SELECT FROM foobar WHERE created at gt DATE SUB curdate INTERVAL 1 MONTH 在 Symfony 中使用 Propel 我会 c 新
  • 无法使用 vba vlookup 查找日期

    我有一个 Excel 工作表 其中 A 列包含日期 B 列包含相应的日期 例如 A2 01 01 14 且 B2 星期三 依此类推 我尝试使用示例 vba 代码检索 B2 中的日期 但我不断收到错误消息 运行时错误 1004 无法获取wor
  • 即使不打开设置应用程序,是否可以将 Settings.bundle 中的设置设为默认值

    我有一个带有 settings bundle 的 iPhone 应用程序 可以处理我的应用程序的各种设置 我可以在 root plist 文件中设置默认值 使用 DefaultValue 属性 但这些值仅在用户第一次打开设置应用程序时使用
  • SICP 3.52 延迟 CDR

    练习3 52 define sum 0 define accum x set sum x sum sum 1 define seq stream map accum stream enumerate interval 1 20 2 defi
  • 在 php 中打印到 Zebra 打印机

    正在寻找使用 RAW 端口 9100 从 php 网页打印到 zebra IP 打印机的正确代码 有谁知道这是否可行 我需要将 ZPL 格式输出的字符串直接发送到 ZM400 标签打印机 我到处搜索 找到的最接近的是 使用php直接打印到网
  • 如何使下拉菜单自动完成消失 onblur 或单击 jquery 外部?

    下面是被调用以在搜索框中显示自动完成功能的函数 我希望自动完成功能在模糊或单击搜索框外部时消失 请告诉我应该在此函数中添加什么以使自动完成功能消失点击外面时向下消失 function hideLoader sub cont fadeIn 1
  • password_hash 到底是如何工作的?

    我试图理解密码哈希值充分以便能够向审核员解释 根据我对答案的寻找 我了解到password hash 函数是一个包装器crypt 在阅读 PHP 手册时预定义常量我看到它使用PASSWORD BCRYPT作为默认整数值 基本上它使用CRYP
  • PDO SQLite查询零结果问题

    我环顾四周 但似乎找不到任何有关此的信息 我不确定这是我的代码的问题还是内存 SQLite 数据库和 PDO 的已知问题 基本上 在将单行插入内存 SQLite 数据库表后 我希望与插入项不匹配的查询返回零行 但是 以下代码给出了一行 fa
  • 是否可以将 DataTable 作为 TextBox 中的 AutoCompleteSource? (C#)

    是否可以将 DataTable 作为 TextBox 中的 AutoCompleteSource C Jared 是正确的 如果不进行一些操作 就无法直接绑定 以下是使用 LINQ 数据集扩展检索字段作为自动完成源的示例 DataTable
  • Windows MIrror 驱动程序 远程显示驱动程序 VNC 服务器 Windows 8

    我正在开发远程桌面服务器的驱动程序 像 UltraVNC 内部协议 之类的东西 首先我发现 Windows 8 不支持镜像驱动程序 作为远程显示驱动程序的 DDI 的唯一子集 1 这是否意味着我需要为 Windows 8 实施远程显示驱动程
  • JavaScript:输入按键

    早上好 I am using java script in each page to trigger the Enter key press Event inside the textbox It is working fine Now i
  • 通过 Azure Powershell 设置 Azure 网站的主机名

    我正在尝试使用 PowerShell 将主机分配给 Azure 网站实例 我已验证要添加的域 主机是否有效 甚至转到 Azure 门户以验证其将新域识别为有效 但由于某种原因 下面的脚本没有像我认为应该的那样设置主机名 当我在为主机名设置新
  • 在运行时自动从 PowerShell 作业中提取数据

    当我试图做一些很可能超出 PowerShell 范围的事情时 我似乎遇到了障碍 我有一个主窗体脚本 它协调了我的大部分功能 但我需要另一个脚本来打开侦听器 system Net Sockets Udpclient Receive 并在整个程
  • 在 AWS Lambda 上安装新字体

    我正在 AWS Lambda 上安装 Imagemagick 但 Imagemagick 通常使用的字体似乎未预安装 如何添加其他字体 以下是我刚刚使用 pandoc xelatex 在 AWS Lambda 上处理自定义字体的工作 我假设
  • 使用 GDB 更改 JVM 中的变量值

    目前我有一个简单的Java程序 public class Test public static void main String args boolean test true while test System out println He
  • JavaFX 中滑块拇指的坐标

    有一些方法可以知道滑块拇指的位置JavaFX Use getBoundsInParent and a lookup Bounds bounds slider lookup thumb getBoundsInParent 您可能需要apply
  • 错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录

    我知道这类问题可能被问过几次 但它们都与 laravel 有关 在我的例子中 这是没有框架的普通 php 我有一个表单 可以从用户那里收集表单并将其保存到数据库中 但我不断收到有关 MYSQL 的错误Error SQLSTATE HY000
  • Laravel 和谷歌地图:foreach 纬度/经度显示标记或地图

    我有一个带有纬度和经度字段的表位置 对于每个位置 我想要一个新地图 或者更好的新标记 它使用表位置中的纬度和经度在地图上显示城市 控制器的索引动作 public function index locations Location all l
  • 具有九个补丁项目背景问题的 ListView

    警告 此问题中的 XML 是错误的 请先阅读答案 然后再混淆 我已经用头撞墙有一段时间了 以下帖子阐明了该主题 但未能解决我的问题 Android ListView 状态列表不显示默认项目背景 and 通过自定义选择器的 ListView
  • Laravel 应用程序关闭时会触发什么事件?

    具体来说 我正在做的是在我的 AppServiceProvider gt boot 方法中 我正在创建一个单例类 如下所示 class AppServiceProvider extends ServiceProvider public fu