我正在重写一个使用Filemaker数据库的应用程序。过去,PHP脚本与Filemaker有一个PHP SDK连接。我正在将其转换为使用Filemaker 17 API。
在开发过程中,我创建了一个新记录,然后显示一个记录列表。创建新记录后,旧系统(使用PHP SDK)将立即显示更新后的列表。我正在开发的新系统不会。
几分钟后,新系统(使用Filemaker 17 API)将显示正确的列表。这似乎需要5-10分钟。
所有这些都是通过使用门户来实现的。
我使用Symfony PHP框架。我试过清除Symfony缓存。
我还尝试将UNIX时间戳附加到_find调用的API。它仍然会返回一个列表,但这是一个陈旧的列表。
我也在使用'cache-control: no-cache'
cURL选项。
我已经搜索了FM17API文档,但是找不到任何相关的东西。
有FM实现的缓存吗?如果是这样,您如何禁用它?
我希望这个列表能通过FM17API立即更新。
-- 更新的 --
如果我手动更新包含门户数据的记录,则从API返回的列表将立即生效。是否缓存门户数据?
发布于 2019-05-29 09:35:43
为了确保有最新的数据,您可以关闭API会话并启动一个新会话。
当您的代码访问完托管数据库后,使用HTTP DELETE方法,其中的会话URL指定托管数据库的名称和会话的访问令牌。如果您的代码没有注销数据库会话,则当FileMaker Data API会话在指定令牌的最后一次调用15分钟后超时时,访问令牌将无效。
或者,作为查找的一部分,您可以在script.pre-request中运行脚本作为_find的一部分,这将刷新布局上的门户。例如使用"Refresh Portal“脚本步骤。您看到的“缓存”行为可能只是布局没有针对该数据API会话进行更新,而布局需要更新。
通过在请求正文中包含script.prerequest、script.presort和脚本参数,可以将FileMaker脚本作为查找请求的一部分运行。
https://fmhelp.filemaker.com/docs/17/en/dataapi/index.html#perform-a-find-request
您还可以使用Person键直接在Events表上进行查找。
最后要注意的是,如果在某个地方有某种未提交的记录,来自API脚本调用而没有以提交结束,或者其他情况,那么数据可能还没有显示在门户中。
(使用最新信息编辑的备注答案)
https://stackoverflow.com/questions/56346889
复制相似问题