2010-12-17 3 views
2

PHP 페이지가 내용/이미지가있는 경우 다른 모든 정보를로드하도록 솔루션을 찾고 있습니다. 완료하고 결과를 표시하는 데 약간의 시간이 걸립니다.나는 PHP 페이지가 먼저 다른 정보와 함께로드 된 다음 작업을 수행합니다.

작업이 오래 걸리므로 PHP 페이지가 너무 느리게로드됩니다. 내 고객이 페이지를 먼저보고 나서 결과를 보여줄 작업을 수행하기를 원합니다.

나는 ob_start() & flush()를 시도했지만 성공적으로 실패했습니다. 그렇게 생각하는 작업을 초기화하는 데 Javascript가 필요할 수 있습니다. 그러나 어떻게 이것을 내포 할 수 있습니까?

+0

같은 방법으로 항상 ... 등,이 매우 쉽습니다. 'onLoad'에서. –

+0

당신은 자바 스크립트를 의미합니다. 지정하십시오 –

+1

예, 자바 스크립트 (AJAX)는 이러한 기능에 대한 일반적인 옵션입니다. jQuery를 살펴볼 것을 권한다. 따라서 아약스를 직접 작성하는 것보다 아약스를 훨씬 쉽게 만들 수 있습니다. –

답변

0

"느린 통화"없이 페이지를로드해야합니다. onload 이벤트 나 웹 페이지 끝의 스크립트에서 서버에 대한 XHR 호출을 수행하여 느린 데이터를 가져옵니다. 호출은 기본적으로 비동기식이므로 호출을 기다리는 동안 사용자가 웹 페이지와 상호 작용할 수 있습니다. 이 시점에서 데이터를 가져 와서 JavaScript로 HTML로 변환합니다.

+0

당신이 참조 할 동일한 몇 가지 링크를 제공 할 수 있습니다. 그래서 내가 일을 이해하고 광산에서 만들 수 있습니다. –

1

그게 PHP인가? php는 서버 측 언어이기 때문에 사용자가 http 응답을 받기 전에 실행됩니다. 따라서 먼저 사이트를 구축해야합니다. 사용자에게 보냅니다. 작업을 수행해야하는 스크립트에 대한 새 요청 (예 : ajax 포함)을 작성하십시오. 주문 코드가 실행되어야합니다.

  • PHP (서버 측) : 웹 사이트 구축은 주요 PHP 코드가 실행됩니다
  • HTML (클라이언트 측) : HTML은 건설 이미지와 자바 스크립트 파일이
  • 자바 스크립트 (클라이언트 측)을로드 할 수 있습니다 : 만들기를 새 httprequest (비동기) 귀하의 opperation와 PHP 파일입니다. opperation이 걸릴 수있는 긴 시간 때문에 시간 초과를 인식하십시오. 필요한 경우 사용자 정의 제한 시간을 설정하십시오.
  • PHP (서버 측) : 결과를 반환하십시오 (PHP 서버가 시간 초과되지 않도록 확인하십시오. 대부분의 서버에서 기본값은 30 초입니다)
  • 자바 스크립트 (Clientside) : ajax 핸들러.

일부 직접 연결. 당신은 온로드 사용 jQuery ajax api with examples

-1

Ajax tutorial of w3schools

는 매우 짧은 시간에 시간 제한 이벤트를 트리거합니다. 그러면 화면이 그려집니다.

이벤트가 시작되면 AJAX 기술을 사용하여 긴 프로세스를 시작하십시오.

오랜 시간 동안 서버에서 프로세스를 실행하려고 시도 할 수 없습니다. 잠시 후 (일반적으로 300 초) 런 어웨이 타이머가 서버 스레드를 중지시킵니다. 이를 피하기 위해서는 긴 프로세스가 폴링 테크닉을 사용하거나 일반 웹 서버 환경에서 실행하지 않아야합니다.

20 초 또는 30 초 이상 실행하려면 세션의 상태 양식을 저장하고 "정상적인"응답을 반환하십시오. 다음주기를 시작하기 전에 답장을 사용하여 진행 중에 사용자를 업데이트하십시오. 로드 및 위치 자체가 세션 데이터를 사용하고 다른 짧은 시간 동안 실행됩니다.

경고 - PHP는 세션 데이터에 대한 모든 액세스를 신중하게 serialize하므로 서버가주기를 처리하는 동안 사용자가 보내는 모든 내용은 처리되기 전에 해당주기가 끝날 때까지 대기합니다.

1

jQuery를이

<script type="text/javascript" src="jquery-1.4.4.min.js"></script> <!-- Put this in your web page's head --> 
<script type="text/javascript"> 
$(function() { 
    $('wherever-you-need-the-resulting-html-to-go').html('<img src="loading-image.gif" alt="Loading" />'); 
    $.ajax({ 
     url: 'wherever-your-slow-code-is.php', 
     success: function(msg) { 
      $('wherever-you-need-the-resulting-html-to-go').html(msg); 
      } 
     }); 
    }); 
</script> 
+0

느린 기능을 별도의 PHP 파일에 넣으십시오. 위의 ajax 호출은 함수를 폴링 한 다음 처리가 완료되면 원하는 위치에 데이터를 삽입합니다. – 65Fbef05

+0

이것은 클라이언트가 자바 스크립트를 가지고 있으므로 초기 PHP 페이지에서 인라인 처리를 수행하는 것보다 100 % 신뢰할 만하지 않다고 가정합니다. 솔리드 코드 예제의 경우 +1입니다. – zanlok

+0

여러 부분으로 구성된 페이지를로드하고 먹을 수는 없습니까? 하, 하! – 65Fbef05

관련 문제