LimeSurvey 远程控制 - 中途失败 import_survey

LimeSurvey Remote Control - failing half way through import_survey

目前使用 LimeSurvey 版本 2.57.1​​+161205

我正在使用遥控器 API 按需上传 LSS 调查文件。

我使用了 3 个 API 调用:

  1. 'import_survey'
  2. 'activate_tokens'
  3. '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 永远不会返回 调查 ID,这使得 activate_tokensactivate_survey 调用也失败了。

我正在使用 JSON RPC 库 https://github.com/fguillot/JsonRPC

LSS 文件的大小为 631k,但不确定这是否是一个问题,因为系统成功导入并激活了 2 个 653k 的调查。

旁注:在输入此内容时,我又进行了一次测试 运行,这次调查顺利通过。这很令人费解。这里可能存在某种时间问题吗?大约 5 分钟前,这项调查失败了,但现在它通过了。我还在我的开发机器上本地测试了这个,这是 Sierra 上的 Macbook Pro,一些调查确实失败了(失败的恰好超过 600k)。

这会是你的问题吗?

Note: If you're opening a URI with special characters, such as spaces, you need to encode the URI with urlencode().

好吧,这似乎是一个超时问题! 我使用的 RPC 客户端默认为 5 秒。 看起来 LimeSurvey 处理超过 600k(大约)的 LSS 数据需要超过 5 秒。 所以当我实例化客户端时,我将超时设置为 60 秒,eg

$this->ls_rpc_client = new JSONRPClient($api_url);
$this->ls_rpc_client->getHttpClient()->withTimeout(60);

现在我的自动导入器可以正常工作了。