Мне нужно отобразить некоторые аналитические данные о том, сколько раз вызывается функция «OnRequestStart», или, скорее, количество обращений в час в нашем внутреннем API, содержащемся в файле .cfc. Желательно через метод жизненного цикла; однако счетчик должен продолжать работу вне жизненного цикла. Я знаю, что это можно легко сделать на других языках, но я новичок в ColdFusion и пытаюсь прочитать документацию, чтобы узнать, есть ли какой-либо метод жизненного цикла, который я могу использовать для этого. Если есть какая-то документация, которой мне не хватает (я пробовал выучить cf за неделю, cfdocs, документация по Adobe), но на самом деле там не так много. Вероятно, это не на 100% ясно, но если возникнут какие-либо разъяснения, я буду рад помочь.
Изменить: я решил, что было бы лучше установить переменную приложения в onApplicationStart и постепенно добавлять 1 к переменной счетчика в начале onRequest. Вот мой пример кода:
Application.cfc:
<CFFUNCTION NAME="OnApplicationStart" ACCESS="PUBLIC" RETURNTYPE="BOOLEAN">
<cfset Application.timer EQ 0/>
<cfset Application.counter EQ 0/>
</CFFUNCTION>
somepage.cfm
<tr>
<cfoutput> #Application.counter#</cfoutput>
</tr>
Я думал, что это сработает, но получаю сообщение об ошибке Element COUNTER is undefined in APPLICATION.
Что-то мне не хватает? Я попытался перезапустить службу CF-сервера и веб-сервер, но безуспешно.
Спасибо всем за вашу помощь
OnRequestStart
. Это ваш API или внешний? - person Shawn   schedule 22.08.2018writeLog(text="<API_Name> Called. #application.reqCount# total calls.", type="information", file="apiLog");
в своем API (при условии, что это CF API) и используйте сценарий Redtopia для записи в областьapplication
. Но это будет увеличивать его каждый раз, когда вызывается API, пока приложение не было перезапущено. Вам может потребоваться другое разделение времени или более постоянный счет. - person Shawn   schedule 22.08.2018writeLog()
создаст файл в первый раз, а затем будет записывать в него новую строку при каждом вызове API. Это поместит файл в папку журнала CF-сервера. Я не думаю, что в журнале CF есть что-то, что будет управлять вашими файлами журнала (размер, количество и т. Д.), Так что вам придется с этим справиться. Вы можете создать задачу, чтобы переместить файл журнала и переименовать его на нужный вам интервал, тогда при следующем вызове API будет создан новый файл. Я не уверен, может ли атрибутfile=
вwritelog()
принимать динамическую переменную (может, включать день или что-то в этом роде). - person Shawn   schedule 22.08.2018application
, вероятно, будет проще всего, но если приложение завершится до достижения вашего порога, вы потеряете свой предыдущий счет. Возможно, вы захотите найти что-нибудь более устойчивое, в зависимости от ваших критериев. - person Shawn   schedule 23.08.2018