这个问题已经困扰我几个月了,而且我还没有找到解决方案。
在经典 ASP 应用程序中使用 MySQL ODBC 连接器 (8.0) 时的默认max_execution_time设置为 30000 毫秒(30 秒),我不知道如何增加它。
我有一个大表(400,000 多行),我UPDATE每天使用该命令多次执行各种计算,通常这需要不到 30 秒的时间,但随着表的不断增长,我开始看到越来越多的计算[MySQL][ODBC 8.0(w) Driver][mysqld-8.0.15]Query execution was interrupted, maximum statement execution time exceeded正在记录错误。
在寻找解决方案时,我不断遇到相同的答案:
设置max_execution_time = x于my.ini
SET [GLOBAL]/[SESSION] max_execution_time = x;或者在运行 SQL 命令之前执行。
这些解决方案工作正常,但仅当您使用 MySQL 客户端(例如 MySQL Workbench)时才有效,但在经典 ASP 应用程序中使用 ODBC 连接器时它们没有任何区别。
下面的代码总是会输出max_execution_time: 30000
Dim dbConn, dbRS
Set dbConn = Server.CreateObject("ADODB.Connection") : dbConn.Open("DSN=my_system_dsn")
Set dbRS = dbConn.Execute("SHOW VARIABLES WHERE Variable_name = 'max_execution_time';")
Response.Write(dbRS("Variable_name") & ": …Run Code Online (Sandbox Code Playgroud) 过去,我使用 NGINX 和ngx_http_secure_link_module来实现这一点,效果很好。如果您尝试直接访问媒体文件,您会得到一个403 access denied error. 但是使用有效的签名 URL...
emample.com/media/audio.mp3?expires=[1 hour]&signature=[SHA2(filename+expiration+secret)]
Run Code Online (Sandbox Code Playgroud)
...授予访问权限。
但我现在正在使用 IIS,并且我想实现同样的目标。我尝试过将 ASP 代码与 URL 重写模块结合使用,在其中创建一个空媒体文件夹,其中包含一个 ASP 页面来处理请求,将所有媒体存储在脱机文件夹中,并使用重写模块来欺骗 URL。
例如...
emample.com/media/audio.mp3?expires=[1 hour]&signature=[SHA2(filename+expiration+secret)]
Run Code Online (Sandbox Code Playgroud)
...将重写到名为“stream.asp”的页面。我会检查签名,如果不正确则返回错误,但否则我会更改内容类型属性以匹配文件的属性,然后从存储实际文件的脱机文件夹中执行二进制流。
这对于文档来说效果很好,但对于音频和视频来说,它很慢,而且你无法来回跳过内容。我确信我可以调整代码来实现这一点,但是以这种方式访问文件会给 IIS 带来很大的压力。
我正在寻找的是 IIS 中的简单 URL 检查,它根据 URL 签名检查授予对文件的访问权限或拒绝文件访问权限。
有人知道可以做到这一点的 IIS 模块吗?或者甚至可以使用 URL 重写模块来实现这一点?