Kannel:从数据库获取短信状态
Kannel: get sms status from database
我正在制作一个 symfony 应用程序,它在数据库中存储大量 SMS,Kannel 检测到这些 SMS 并发送,我肯定在使用 sqlbox,Kannel 通知我们的 symfony 应用程序有关短信的问题通过 dlr-url 这导致了 apache 的大量内存使用,导致每条短信我们从 dlr 收到大约 3 个 http 请求来更新短信所以对于 100k 短信我们得到 300k 请求并且在每个请求中我们更新数据库...
所以我想到的是,为什么 Kannel 不调用 dlr 直接更新数据库中的短信状态 url...这可能吗?
据我了解,您的测试基于以下配置:
sqlbox
发送消息(通过插入 send_sms
table
dlr_url
在您的配置中设置以获取送达报告
- 无自定义
dlr-storage
如何在不使用额外的 http 调用的情况下保留 DLR
已经有一个工具可以自动将 DLR 导入数据库:这是 dlr-storage
的兴趣所在
在Kannel文档中,你会看到这个字段有几种可能:
Supported types are: internal, spool, mysql, pgsql, sdb, mssql,
sqlite3, oracle and redis. By default this is set to internal.
根据我的经验,当使用 数据库 dlr 存储时,交付报告 (DLR) 仅保存在数据 table 中,而尚未收到交付状态,那么它们是自动删除.
因此,如果您希望保留一些有关已发送邮件的日志,您需要编辑一些文件(gw/dlr_mysql.c
和 gw/dlr.c
)以避免此删除。
dlr-strorage 的配置
这里我举个例子MySql。
kannel.conf
文件中的附加配置示例:
# this line must be in the "core" group
dlr-storage = mysql
#---------------------------------------------
# DLR STORAGE
#
#
group = mysql-connection
id = mydlr
host = localhost
username = *yourMySqlUserName*
password = *yourMySqlPass*
database = *yourMySqlDatabaseWithTheDlrTable*
max-connections = 1
# Group defining where are the data in the db (table, columns)
group = dlr-db
id = mydlr
table = dlr
field-smsc = smsc
field-timestamp = ts
field-destination = destination
field-source = source
field-service = service
field-url = url
field-mask = mask
field-status = status
field-boxc-id = boxc
我正在制作一个 symfony 应用程序,它在数据库中存储大量 SMS,Kannel 检测到这些 SMS 并发送,我肯定在使用 sqlbox,Kannel 通知我们的 symfony 应用程序有关短信的问题通过 dlr-url 这导致了 apache 的大量内存使用,导致每条短信我们从 dlr 收到大约 3 个 http 请求来更新短信所以对于 100k 短信我们得到 300k 请求并且在每个请求中我们更新数据库...
所以我想到的是,为什么 Kannel 不调用 dlr 直接更新数据库中的短信状态 url...这可能吗?
据我了解,您的测试基于以下配置:
sqlbox
发送消息(通过插入send_sms
tabledlr_url
在您的配置中设置以获取送达报告- 无自定义
dlr-storage
如何在不使用额外的 http 调用的情况下保留 DLR
已经有一个工具可以自动将 DLR 导入数据库:这是 dlr-storage
在Kannel文档中,你会看到这个字段有几种可能:
Supported types are: internal, spool, mysql, pgsql, sdb, mssql, sqlite3, oracle and redis. By default this is set to internal.
根据我的经验,当使用 数据库 dlr 存储时,交付报告 (DLR) 仅保存在数据 table 中,而尚未收到交付状态,那么它们是自动删除.
因此,如果您希望保留一些有关已发送邮件的日志,您需要编辑一些文件(gw/dlr_mysql.c
和 gw/dlr.c
)以避免此删除。
dlr-strorage 的配置
这里我举个例子MySql。
kannel.conf
文件中的附加配置示例:
# this line must be in the "core" group
dlr-storage = mysql
#---------------------------------------------
# DLR STORAGE
#
#
group = mysql-connection
id = mydlr
host = localhost
username = *yourMySqlUserName*
password = *yourMySqlPass*
database = *yourMySqlDatabaseWithTheDlrTable*
max-connections = 1
# Group defining where are the data in the db (table, columns)
group = dlr-db
id = mydlr
table = dlr
field-smsc = smsc
field-timestamp = ts
field-destination = destination
field-source = source
field-service = service
field-url = url
field-mask = mask
field-status = status
field-boxc-id = boxc