Реализует ли API-интерфейс Filemaker кэширование для запросов _find или portalData? - PullRequest
0 голосов
/ 28 мая 2019

Я переписываю приложение, которое использует базу данных Filemaker.Исторически PHP-скрипт имел соединение PHP SDK с Filemaker.Я конвертирую его, чтобы использовать API Filemaker 17.

Во время разработки я создаю новую запись, а затем отображаю список записей.После создания новой записи старая система (использующая PHP SDK) немедленно отобразит обновленный список.Новая система, которую я разрабатываю, не будет.

Через несколько минут новая система (с помощью API Filemaker 17) покажет правильный список.Кажется, это занимает 5-10 минут.

Все это происходит с помощью порталов.

Я использую PHP-фреймворк Symfony.Я попытался очистить кэш Symfony.

Я также попытался добавить метку времени UNIX к URL-адресу _find вызова API.Он по-прежнему возвращает мне список, но это устаревший список.

Я также использую опцию 'cache-control: no-cache' cURL.

Я изучил документацию по API FM 17, ноне могу найти ничего подходящего.

Есть ли кеш, который реализует FM API?Если так, как вы это отключите?

Я ожидаю, что список будет обновляться немедленно через API FM 17.

- Обновлено -

Если я вручную обновлю запись , содержащая данные портала, список, возвращаемый из API, работает мгновенно.Кэшируются ли данные портала?

1 Ответ

1 голос
/ 29 мая 2019

Чтобы обеспечить наличие свежих данных, вы можете закрыть сеанс API и начать новый сеанс.

Когда ваш код завершит доступ к размещенной базе данных, используйте метод HTTP DELETE с URL-адресом сеансов, указав имя размещенной базы данных и маркер доступа для сеанса.Если ваш код не выходит из сеанса базы данных, токен доступа становится недействительным, когда время сеанса API данных FileMaker истекает через 15 минут после последнего вызова, в котором указан токен.

https://fmhelp.filemaker.com/docs/17/en/dataapi/index.html#write-fm-data-api-calls_connect-database_log-out

Или, как часть вашей находки, вы можете запустить скрипт в script.pre-request как часть вашего _find, который обновит порталы в макете.Например, используя шаг сценария «Обновить портал».Поведение «кэширования», которое вы видите, может заключаться в том, что макет не обновляется для этого сеанса Data API, и макет требует обновления.

Сценарии FileMaker можно запускать как часть запроса на поиск, выполниввключая script.prerequest, script.presort и параметры скрипта в теле запроса.

https://fmhelp.filemaker.com/docs/17/en/dataapi/index.html#perform-a-find-request

Вы также можете выполнить поиск непосредственно в таблице событий, используя свою персонуKey.

Также в качестве заключительного замечания: если где-то есть какая-то незафиксированная запись, от вызова сценария API, который не заканчивается фиксацией, или иным образом, данные могут не отображаться впортала пока нет.

(Примечание к ответу отредактировано со свежей информацией)

...