2013-04-23 2 views
1

나는 이상한 상황에 처해 있으며, 어디서부터 시작해야할지 모르겠습니다. 프론트 엔드에는 knockout.js 양식이, 백엔드에는 CakePHP가 있습니다.CakePHP GET 요청은 일부 시간에만 실패합니다.

현재로서는 knockout.js 양식의 일부 JSON 데이터를 CakePHP로 보냅니다. 이 PHP는 일부 처리를 수행 한 다음 JSON 형식의 결과를 다시 녹아웃 자바 스크립트 파일에 에코합니다.

글쎄,이 문제는 내가 CakePHP를 통해이 PHP 설정을했을 때 1/4 정도만 작동하는 것 같습니다. knockout이 백엔드에 의존하지 않기 때문에 Webroot (Cake과 관련이없는 표준 파일)에이 PHP 파일을 가지고있을 때는 100 %의 시간 동안 작동합니다. 그래서 여기

는 두 데이터입니다

Fails frequently: knockout.html -> knockout.js -> CakePHP Controller -> echo in CakePHP view-> knockout.js -> knockout.html 

Works 100%: knockout.html -> knockout.js -> PHP in webroot, echo from the same page -> knockout.js -> knockout.html 

난 그냥 내 웹 루트에 PHP 파일을 사용 흘러 그러나 나는 몇 가지에 대한 데이터베이스를 조회해야하고 나는 모두를 질의 유지하고 싶습니다 케이크가 아니라 외부 소스.

CakePHP 방법이 너무 오래 걸리며 결과가 빨리 나오지 않아 실패 할 수 있습니까?

편집 - 컨트롤러를 변경하여 계산이 없으므로 단순히 JSON 인코딩 된 텍스트를보기로 전달합니다. 이로 인해 오류가 발생하지 않으며 100 % 시간이 걸렸습니다. 그래서, CakePHP가 에러를 일으키는 데 너무 오랜 시간이 걸렸다 고 말하는 것이 안전할까요? 프레임 워크가 단순한 PHP보다 오래 걸린다는 것을 이해 합니다만, 왜 이것이 실패 할까? 나는 치밀한 계산을하고 있지 않다.

+0

어떤 계산을하고 있는지 간단히 설명 할 수 있습니까? 그것은 데이터베이스 쿼리를 포함합니까? requestAction을 통해 다른 작업을 호출 할 수 있습니까? – Headshota

+0

@Headshota 먼저 데이터베이스에서 하나의 항목을 가져온 다음 PHPquery를 사용하여 다른 사이트에서 일부 콘텐츠 (이 경우 3 가지 인스턴스)를 가져옵니다. 이는 잠시 시간이 걸릴 수 있습니다. 그러나 CakePHP와 표준 PHP 파일이 왜 이렇게 다른지는 알 수 없습니다. 나는 심지어 그 변수를 기대 값과 동일하게 설정하고 PHPquery를 사용하여 db 쿼리를 제거하려고 시도했지만, 때때로 CakePHP가 PHPquery와 잘 작동하지 않는다고 생각하는 경우가 때때로 실패합니다. – user1104854

+0

@Headshota 필자는 데이터베이스에서 한 번만 내용을 가져온 다음 PHPquery를 사용하여 외부 소스에서 항목을 세 번 가져 오는 것으로 분명히해야합니다. – user1104854

답변

0

매우 둥근 방식으로 작동하도록했습니다. 지금은 100 % 일하고 있지만, 어떻게해야하는지 만족스럽지 않습니다.

필자는 ItemsController에서 PHPQuery를 사용하고 있다고 설명했다. 나는이 논리를 모두 취하여 케이크 구조 외부와 웹 루트에있는 별도의 PHP 파일을 만들었습니다. 그래서 녹아웃 대신 해당 ItemsController 함수를 호출하여 웹 루트의 파일을 호출합니다. 이 파일에서 필자는 데이터베이스에 액세스하여 필요한 것을 찾은 다음 PHPQuery 작업을 수행합니다.

매우 이상합니다. CakePHP 외부에서 100 % 작동합니다. CakePHP 기능에 사용될 때 50 % 이상 실패합니다. 나는 그것을 얻지 않지만, 적어도 그것은 효과가있다.

+0

PhpQuery를 정확히 사용하는 이유는 무엇입니까? JavaScript/jQuery를 통해 직접 외부 데이터를 가져 오는 것이 더 빠르지 않습니까?결과를 캐싱하지 않는 한 각각의 요청에 대해 PHP를 통해 외부 데이터를 가져 오는 것은 많은 오버 헤드처럼 보입니다. – thaJeztah

+0

PHP를 사용하는 이유 중 일부가 코드 일부를 숨기고 데이터베이스를 쿼리해야하기 때문에 (PHP 사용). (적어도 .js 파일 이상이라면) 자바 스크립트는 모든 사람에게 공개 될 것입니다. – user1104854

+0

글쎄, 나는 PhpQuery가 2010 년 이후로 어떤 업데이트도받지 못했다는 것을 알아 냈습니다. 대부분의 상황에서 종종 외부 데이터가 변경 될 것으로 예상됩니다). 또한 요구 사항에 따라 PHP의 내장 Dom 함수를 고려해보십시오. 문서 [DomDocument :: loadHTML()] (http://php.net/manual/en/domdocument.loadhtml.php) 및이 질문 [HTML/XML 구문 분석 및 처리 방법] (http : // stackoverflow. com/questions/3577641/how-to-parse-and-process-html-xml) – thaJeztah

관련 문제