LimeSurvey 远程控制 - 在 import_survey 中途失败
Posted
技术标签:
【中文标题】LimeSurvey 远程控制 - 在 import_survey 中途失败【英文标题】:LimeSurvey Remote Control - failing half way through import_survey 【发布时间】:2017-05-30 00:47:13 【问题描述】:目前使用 LimeSurvey 版本 2.57.1+161205
我正在使用远程控制 API 按需上传 LSS 调查文件。
我使用 3 个 API 调用:
-
'import_survey'
'activate_tokens'
'activate_survey'
按这个顺序。
它一直运行良好,但现在我发现了一个非常奇怪的问题。以前这个特定的 LSS 文件上传正常没有问题,但现在我得到一个异常:
fopen(https://some.server.com/lime/admin/remotecontrol): failed to open stream: HTTP request failed!
(some.server.com 是虚构的,实际域确实存在并且工作正常)
如果我登录 LimeSurvey 的管理门户,调查实际上已经创建!但由于它会导致异常,API 调用 import_survey 永远不会返回 Survey ID,这使得 activate_tokens 和 activate_survey em> 调用也会失败。
我正在使用 JSON RPC 库 https://github.com/fguillot/JsonRPC
LSS 文件大小为 631k,但不确定这是否是个问题,因为系统成功导入并激活了 2 个 653k 的调查。
旁注:当我输入此内容时,我又进行了一次测试,这次调查顺利通过。这是非常令人费解的。这里可能存在某种时间问题吗?大约 5 分钟前,这项调查失败了,但现在它通过了。我还在我的开发机器上进行了本地测试,该机器是 Sierra 上的 Macbook Pro,一些调查确实失败了(失败的调查恰好超过 600k)。
【问题讨论】:
启用完整的错误检查和记录,可能是超时或内存问题 我仍然对此感到困惑。超过 600k 的调查文件似乎会发生这种情况 【参考方案1】:这似乎是一个超时问题! 我使用的 RPC 客户端的默认值为 5 秒。 看起来 LimeSurvey 处理超过 600k(大约)的 LSS 数据需要超过 5 秒的时间。 所以当我实例化客户端时,我将超时设置为 60 秒,例如
$this->ls_rpc_client = new JSONRPClient($api_url);
$this->ls_rpc_client->getHttpClient()->withTimeout(60);
现在我的自动导入器可以正常工作了。
【讨论】:
【参考方案2】:这是你的问题吗?
Note: If you're opening a URI with special characters, such as spaces, you need to encode the URI with urlencode().
【讨论】:
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 不,这完全破坏了它! URL 开头没有空格以上是关于LimeSurvey 远程控制 - 在 import_survey 中途失败的主要内容,如果未能解决你的问题,请参考以下文章
LimeSurvey Remote Control API:获取标记为“N/A”的无关响应
LimeSurvey:无论如何要使用 get_session_key , JSON-RPC 和 Authwebserver?