В ColdFusion есть ли способ определить, на каком сервере работает код? - PullRequest
16 голосов
/ 06 мая 2009

Есть ли способ в коде ColdFusion определить, на каком сервере выполняется код? У меня мало серверов ColdFusion с балансировкой нагрузки. Я хочу знать, на каком сервере выполняется код, когда я ловлю исключение, чтобы я мог включить эту информацию в код регистрации / отчетности.

Серверы - Windows 2003 / IIS, если это имеет значение. Мне бы очень хотелось узнать, как это сделать в Linux / Apache. : -)

Ответы [ 7 ]

27 голосов
/ 06 мая 2009

Это может помочь вам в дальнейшем ...

<cfscript>
machineName = createObject("java", "java.net.InetAddress").localhost.getCanonicalHostName();
hostaddress = createObject("java", "java.net.InetAddress").localhost.getHostAddress();
</cfscript>
<cfdump var="#machineName#"><br />
<cfdump var="#hostaddress#"><br />
9 голосов
/ 06 мая 2009

Вы можете использовать Переменные сервера как

server.coldfusion.appserver 
server.coldfusion.expiration    
server.coldfusion.productlevel
server.coldfusion.productname   
server.coldfusion.productversion
server.coldfusion.rootdir   
server.coldfusion.serialnumber  
server.coldfusion.supportedlocales
server.os.additionalinformation 
server.os.arch  
server.os.buildnumber   
server.os.name  
server.os.version

для настройки вашего кода для конкретных платформ. Сделайте <cfdump var=”#SERVER#” />, чтобы увидеть, что применимо к вашей версии Coldfusion.

Вы можете получить имя хоста с помощью вызова Java:

<cfscript>
machineName = createObject("java", "java.net.InetAddress").localhost.getHostName();
instanceName = createObject("java", "jrunx.kernel.JRun").getServerName();
</cfscript>
2 голосов
/ 19 мая 2009

Еще одно место для поиска информации о выполнении процесса JRun - это следующее:

<cfset oErrorJRun = createObject("java","jrunx.kernel.JRun")/>
<cfset strServerName = oErrorJRun.ServerName />

Это даст вам имя экземпляра JRun, в котором выполняется код. Мы сталкивались со случаями, когда в нашей кластерной среде IIS на одном узле будет регистрировать попадание страницы, но JRun на другом узле будет обрабатывать запрос. Время от времени у нас перестанет отвечать JRun одного узла, и нам потребуется перезапустить некоторые службы, чтобы вернуть трафик на этот узел. Я использую приведенный выше код в своем плагине обработчика ошибок, чтобы вставить имя сервера в электронное письмо, которое я отправляю администраторам, и включить его в имя файла, в который я записываю отладочную информацию.

2 голосов
/ 06 мая 2009

Я верю, что CGI.SERVER_NAME даст вам то, что вы хотите.

Редактировать за комментарий: Вы можете сделать что-то более "низкое" ...

<cfset inet = CreateObject("java", "java.net.InetAddress")>  
<cfdump var = "#inet.getLocalhost().gethostname()#">  

(здесь нет сервера CF на работе, поэтому я не могу это проверить).

0 голосов
/ 22 февраля 2019
<cffunction name="getMachineName" returntype="string" access="private" output="false" hint="Server Name">
    <cftry>
        <cfexecute
            name="hostname"
            arguments=""
            variable="local.machineNameResult"
            timeout=10 />
            <cfreturn Trim(local.machineNameResult)>
        <cfcatch type="any">
            <cfdump var="#cfcatch#">
            <cfabort>
        </cfcatch>
    </cftry>
</cffunction>

<cfdump var="#getMachineName()#" />
<cfabort />
0 голосов
/ 11 сентября 2014

Для нас, использующих узлы за прокси-сервером балансировки нагрузки, я в итоге вызвал команду 'hostname', работает и на windows - так что вот набор:

<cfscript>
machineName = createObject("java", "java.net.InetAddress").localhost.getCanonicalHostName();
hostaddress = createObject("java", "java.net.InetAddress").localhost.getHostAddress();
</cfscript>
<cfdump var="#machineName#"><br />
<cfdump var="#hostaddress#"><br />
<cfdump var="#CGI.SERVER_NAME#"><br />
<cfexecute name = "hostname" timeout = "1"></cfexecute>
0 голосов
/ 06 марта 2014

Используйте приведенный ниже фрагмент кода для получения доменного имени.

<cfoutput>#cgi.server_name#</cfoutput>

Надеясь, это то, что вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...