Сбой связи в CFC с запросом - PullRequest
0 голосов
/ 13 июля 2011

У меня есть CFC, который обрабатывает форму «свяжитесь с нами» на сайте размещения вакансий. CFC предназначен для обработки нескольких различных форм с сайта; общая форма «свяжитесь с нами» и другая форма «Я заинтересован в этой работе».

Когда CFC получает данные и в аргументах указывается номер ID для публикации вакансии, CFC выполняет быстрый запрос и получает информацию о публикации вакансии, включает ее в электронное письмо и отправляет в отдел кадров и пользователю электронная почта с информацией о вакансии и контактной информацией пользователя.

Если идентификатор не обнаружен, CFC просто отправляет пользователю электронное письмо с подтверждением и отправляет контактную информацию в отдел кадров.

Когда обрабатывается общая (не ID) форма, все работает хорошо. Но когда приходит время обработать форму, включающую быстрый запрос, я получаю сообщение об ошибке:

Communications link failure The last packet successfully received from the server was 61,380 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.

Почему запрос, заполняющий мою страницу, работает нормально, но этот CFC выдает ошибку с запросом в нем?

Мы запускаем CF9 с MYSQL в среде общего хостинга.

ХФУ ...

<cfif len(local.data.job_id)>
        <cftry>
        <cfquery name="qJobsforEmail" datasource="#application.datasource#" username="#application.username#" password="#application.password#">
            SELECT * FROM #local.data.table# WHERE #local.data.table#.#local.data.column#= <cfqueryparam value="#local.data.job_id#" cfsqltype="cf_sql_numeric">
        </cfquery>
        <cfcatch type="any">
            <cfmail to="my@email.com" from="server@host.com" subject="Error processing query" type="html">
            <h3>There was an error processing the query</h3>
            <p><cfoutput>#cfcatch.Detail#</cfoutput></p>
            <p><cfoutput>#cfcatch.NativeErrorCode#</cfoutput></p>
            <p><cfoutput>#cfcatch.SQLState#</cfoutput></p>
            <p><cfoutput>#cfcatch.Sql#</cfoutput></p>
            <p><cfoutput>#cfcatch.queryError#</cfoutput></p>
            <p><cfoutput>#cfcatch.where#</cfoutput></p>
            <p><cfoutput>#cfcatch.type#</cfoutput></p>
            <cfdump var="#local#">
            </cfmail>
            <cfset local.response["error"] = 'true'>
            <cfset local.response["message"] = 'Error message to the page goes here...'>
            <cfreturn local.response>
            <cfabort>
        </cfcatch>
        </cftry>
        <cftry>
        <cfmail to="#local.data.email#" bcc="hr@theclient.com"  from="server@host.com" subject="Thank you for contacting us" type="html">
        <h2>We&rsquo;re glad you contacted us.</h2>
        <p>Warm and fuzzy thank you message here</p>
        <p>We received the following information on <cfoutput>#DateFormat(Now())#</cfoutput>, <cfoutput>#TimeFormat(Now())#</cfoutput>: </p>
        <p>First Name: <cfoutput>#local.data.first_name#</cfoutput></p>
        <p>Last Name: <cfoutput>#local.data.last_name#</cfoutput></p>
        <cfif len(local.data.suffix)>
            <p>Suffix: <cfoutput>#local.data.suffix#</cfoutput></p>
        </cfif>
        <p>Specialty: <cfoutput>#local.data.specialty#</cfoutput></p>
        <p>Email Address: <cfoutput>#local.data.email#</cfoutput></p>
        <p>Phone: <cfoutput>#local.data.phone#</cfoutput></p>
        <p> Current City and State: <cfoutput>#local.data.city#</cfoutput></p>
        <cfif len(local.data.comments)>
            <p>Message: <cfoutput>#local.data.comments#</cfoutput></p>
        </cfif>
        <p style="border-top:thin dotted black;padding-top:20px;font-weight:bold;">This is the position you&rsquo;re inquiring about:</p>
        <p style="font-weight:bold;"><cfoutput>#qJobsforEmail.title#</cfoutput></p>
        <p style="padding-bottom:20px;"><cfoutput>#qJobsforEmail.description#</cfoutput></p>
        <p>Our Recruiter will review this information and get in touch with you as soon as possible. Please make sure your email or phone number listed above is correct.</p>
        <p>Thanks again for contacting us. We look forward to speaking with you soon.</p>
        </cfmail>
        <cfcatch type="any">
            <cfmail to="my@email.com" from="server@host.com" subject="Error processing email" type="html">
            <h3>There was an error processing the email at</h3>
            <cfdump var="#cfcatch.Detail#">
            <cfdump var="#local#">
            </cfmail>
            <cfset local.response["error"] = 'true'>
            <cfset local.response["message"] = 'message to return to the page...'>
            <cfreturn local.response>
            <cfabort>
        </cfcatch>
        </cftry>

    <cfelse>

<!-- regular ol form process goes here -->
</cfif>

1 Ответ

5 голосов
/ 13 июля 2011

Не думаю, что это проблема с вашим кодом, скорее проблема, которую должна рассмотреть ваша хостинговая компания.

Вероятно, что ColdFusion пытается повторно использовать соединение с базой данных из своего пула соединений, но связь не работает. Обычно это можно исправить, добавив запрос проверки в параметры источника данных (например, SELECT 1) или отключив пул соединений.

Я должен поблагодарить Стивена Эрата за его знания по этому конкретному вопросу: http://forums.adobe.com/message/3396333#3396333

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