PHP错误日志已成功发送到Sentry,但在Sentry仪表板上没有显示日志 - php

即使成功发送了错误,仍未更新Sentry Dashboard的原因是什么?

我试过模拟错误,并将整个过程记录在Raven库中,从获取异常直到发送到哨兵。 Raven返回了200 Http代码(成功),但是当我将其检查到Sentry Dashboard时,日志为空。

我们的Raven版本是0.9.0

更新:

我已经尝试过如here所示的Raven CLI测试器,它成功发送了异常,但Sentry仪表板中未显示任何日志。

更新:

通过重新安装Sentry并使用新的dsn来解决此问题。如果还有其他解决方案,则不需要重新安装并使用新的dsn。随时分享您的答案。

参考方案

如果您使用的是SENTRY ON-PREMISE,则在工作进程未运行或队列未备份的情况下可能会发生这种情况。官方文档说:

Sentry带有一个内置的队列,可以处理更多任务
异步方式。例如,当一个事件而不是
立即将其写入数据库,它将作业发送到队列,因此
该请求可以立即返回,并且背景
工作人员实际处理该数据。

请注意,它依靠Celery库管理工人。因此,从CLI运行工作程序可能会解决此问题:

$ sentry celery worker

建议将此服务作为服务运行,并使用主管进行示例配置:

[program:sentry-worker]
directory=/www/sentry/
command=/www/sentry/bin/sentry celery worker -l WARNING
autostart=true
autorestart=true
redirect_stderr=true
killasgroup=true

Sentry支持两个主要代理,可以根据您的工作量进行调整:

RabbitMQ  and `Redis`

雷迪斯

默认代理为Redis,在大多数情况下均可使用。使用Redis的主要限制是所有待处理的工作必须适合内存。

BROKER_URL = "redis://localhost:6379/0"

如果您的Redis连接要求使用密码进行身份验证,则需要使用以下格式:

BROKER_URL = "redis://:password@localhost:6379/0"

兔子MQ

如果您的工作量很大,或者担心将待处理的工作量存储在内存中,那么RabbitMQ是支持Sentry工作者的理想选择。

BROKER_URL = "amqp://guest:guest@localhost:5672/sentry"

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…