微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Symfony命令不会发送所有跟踪请求

如何解决Symfony命令不会发送所有跟踪请求

我正在使用symfony 3.4(我知道,需要升级,我们正在研究中)。我写了一个shell命令,每个月作为cron作业运行。

我有以下代码

// ConnectivityInventoryCommand.PHP

protected function execute(InputInterface $input,OutputInterface $output)
{
    try {
        $connectivityInventoryList = $this->connectivityInventoryService->generateInventoryReport($startDate,$endDate);
        $this->connectivityInventoryUploadService->uploadInventoryReport($connectivityInventoryList,$endDate);

        $metrics = $this->pushMetrics($this->prepareMetrics($connectivityInventoryList));

        /** @var Output $output */
        $output->result(sprintf("Job finished successfully"),null,$this->metricsToArray($metrics));
    } catch(Exception $exception) {
        $output->result(sprintf("Job Failed with exception: %s",$exception->getMessage()));
    }
}

uploadInventoryReport方法中,它连接到FTP服务器,上传文件,并且文件成功上传后,它将执行这段代码

foreach ($this->getPartnerEmailsAsArray($partnerConnectivityInventory->getPartnerEmail()) as $partnerEmail) {
    $payload = (new TrackingPayload())
        ->setProperties(
             (new ConnectivityInventoryProperties())
                 ->setPartnerId($partnerConnectivityInventory->getPartnerId())
                 ->setPartnerName($partnerConnectivityInventory->getPartnerName())
                 ->setLanguage('en-US')
                 ->setEmail($partnerEmail)
                 ->setLink($absoluteFilePath)
         );
     $this->trackingService->track($payload);
}

跟踪服务是Segment PHP客户端。

我希望可以跟踪9个分段事件,但是在任何给定的运行中,我都会得到6-8的任何信息。我知道有9封电子邮件,因为如果我调试,它将进入9次循环,并带有9个不同的电子邮件地址。

一切正常,禁止段事件。

我已经尝试在foreach的末尾添加睡眠,但这仍然无济于事。我还在execute方法的末尾添加一个睡眠,以为可能在退出呼叫之前就快要死了,但是方法末尾的睡眠似乎只是在延迟段标注直到睡眠已经过去。

我是否缺少某些东西或无法完全正确理解?

解决方法

万一有人希望解决此问题,这就是我意识到的问题以及解决方法。

在命令完成之前,the client似乎无法正确刷新所有内容。我不是100%知道内部结构,但是我的修正让我感到与之相关。

$this->trackingService(它是链接的客户端的包装器)中,我添加了一个名为forceFlush()的函数,该函数仅调用Segment::flush()。我在execute方法的try-catch末尾调用此方法。

一旦被调用,所有的期望值就会出现在段中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。