>  기사  >  백엔드 개발  >  PHP를 사용하여 정적 HTML 페이지를 생성하는 두 가지 일반적인 방법

PHP를 사용하여 정적 HTML 페이지를 생성하는 두 가지 일반적인 방법

WBOY
WBOY원래의
2016-07-29 09:15:261008검색

사용자가 동적 링크를 클릭할 때마다 데이터 쿼리 요청이 서버로 전송되기 때문입니다

잠재적으로 수백만 건의 방문이 가능한 웹사이트의 경우 이는 의심할 여지 없이 서버에 큰 부담이 됩니다

그래서 동적 데이터를 정적인 HTML 페이지로 변환하는 것이 인력과 물적 자원을 절약하기 위한 첫 번째 선택이 되었습니다

해당 경험이 없었기 때문에 처음에는 이 기술이 매우 신비롭다고 생각했습니다

근데 몇 가지 예를 읽어보니 그리 복잡하지 않다는 걸 알게 됐어요(하지만 인터넷에 있는 정보는 특별히 상세하지 않네요)

오전과 오후에 걸쳐 실험을 한 끝에 드디어 작업을 완료했습니다. 몇 가지 생각과 간단한 예

새우들이 비웃지 않기를 바랍니다

일반적으로 php를 사용하여 html 페이지를 변환하고 출력하는 방법은 두 가지가 있습니다. 새우의 기사를 인용합니다.

아니요. 하나: 템플릿을 사용하세요. 현재 강력한 스마트 템플릿과 간단하고 사용하기 쉬운 스마트 템플릿을 포함하여 많은 PHP 템플릿이 있습니다. 각 템플릿에는 출력 콘텐츠를 가져오는 기능이 있습니다. 정적 페이지를 생성하는 방법은 이 기능을 사용하는 것입니다. 이 방법을 사용하면 코드가 더 명확하고 읽기 쉽다는 장점이 있습니다.

여기에서는 정적 페이지를 생성하는 방법을 설명하기 위해 smarty를 예로 사용합니다.

  1. require("smarty/Smarty .class.php");
  2. $t = new Smarty;
  3. $t->ass("title","Hello World!");
  4. $ content = $ t->fetch("templates/index.htm");
  5. //여기서 fetch()는 출력 콘텐츠를 가져오는 함수입니다. 이제 $content 변수에 콘텐츠가 있습니다. 표시
  6. $fp = fopen("archives/2005/05/19/0001.html", "w");
  7. fwrite($fp, $content);
  8. fclose( $fp);
  9. ?>

두 번째 방법: ob 계열 함수를 사용합니다. 여기서 사용되는 함수는 주로 ob_start(), ob_end_flush(), ob_get_content()입니다. 여기서 ob_start()는 버퍼를 연 후에는 PHP 프로그램의 파일이 아닌 헤더 정보가 모두 전송되지 않습니다. , ob_end_flush()를 사용할 때까지 내부 버퍼에 저장됩니다. 여기서 가장 중요한 함수는 ob_get_contents()입니다. 이 함수의 기능은 위의 fetch()와 동일합니다. 이유는 같습니다.

  1. ob_start();
  2. echo "Hello World!";
  3. $content = ob_get_contents( );//PHP 페이지의 모든 콘텐츠 출력 가져오기
  4. $fp = fopen("archives/2005/05/19/0001.html", "w");
  5. fwrite ($ fp, $content);
  6. fclose($fp);
  7. ?>

제가 선택한 두 번째 방법은 ob 시리즈를 사용하는 것입니다. 함수

처음 봤을 때 조금 헷갈렸는데 나중에 ob가 출력 버퍼링, 즉 출력 캐싱을 의미한다는 것을 알게 되었습니다.

출력할 준비가 되면 모든 데이터가 저장됩니다. 서버가 PHP를 구문 분석한 후 클라이언트에 출력할 모든 HTML 코드는 ob에 저장됩니다. html 정적 페이지를 출력하려면 캐시를 꺼내서 html 페이지에 작성하기만 하면 됩니다. 🎜>

사실 원리는 매우 간단합니다

여기서는 여러 함수를 사용합니다. PHP를 처음 접하는 사람이라 아직 많은 함수를 이해하지 못하므로 여기서 설명하겠습니다.

ob_start(): 캐시 "캡처" 시작 즉, 여기에서 브라우저 캐시를 엽니다.

ob_end_flush(): 브라우저 캐시 닫기

ob_get_content(): 캐시 콘텐츠 읽기

fopen("File path" , "Open mode") 이 함수에는 파일을 여는 데 사용할 수 있는 여러 가지 열기 모드가 있습니다.

"r" 읽기 전용 모드로 열고 파일 포인터를 파일 헤더로 가리킵니다.

“r” 읽기 및 쓰기 모드로 열고 파일 포인터가 파일 헤더를 가리킵니다.

"w"는 쓰기 모드를 켜고 파일 포인터가 파일 헤더를 가리키도록 하며 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 파일을 만들어 보십시오.

“w”는 읽기-쓰기 모드로 열리고 파일 포인터가 파일 헤더를 가리키도록 하며 파일 크기를 0으로 자릅니다. 파일이 존재하지 않으면 생성해 보십시오.

fwrite("파일 이름", "내용 쓰기") 파일 쓰기

fclose() 파일 닫기

변환하려는 html 파일이므로 최대 수백 개가 있을 수 있으므로 여기에서는 fopen의 경로를 정적으로 지정할 수 없습니다. HTML 파일 이름 지정을 용이하게 하기 위해 사용자가 보낸 ID 및 기타 정보를 저장할 수 있는 경로 변수를 설정할 수 있습니다. 지난번에 PHP로 XML 데이터를 읽는 방법의 예입니다.

  1. ob_start();//브라우저 캐시 열기
  2. //xml 데이터를 읽는 방법
  3. $parser = xml_parser_create(); //파서 편집기 만들기
  4. xml_set_element_handler($parser, "startElement", "endElement") //태그가 트리거될 때 해당 기능을 설정합니다. 여기서는 각각 startElement와 endElenment입니다
  5. xml_set_character_data_handler($parser, "characterData");//데이터를 읽을 때 해당 함수를 설정
  6. $xml_file="1.xml";// 필요한 xml 파일을 지정하십시오. url
  7. $filehandler = fopen($xml_file, "r"); //파일 열기
  8. while ($data = fread($filehandler, 4096))
  9. {
  10. xml_parse($parser, $data, feof($filehandler));
  11. } // 처리할 때마다 4096바이트를 꺼냅니다.
  12. fclose($filehandler);
  13. xml_parser_free($parser);//파서 파서를 닫고 해제합니다
  14. $name=false;
  15. $position=false;
  16. function startElement($parser_instance, $element_name, $attrs) / /시작 태그 이벤트 기능
  17. {
  18. global $name,$position;
  19. if($element_name=="NAME")
  20. {
  21. $name=true;
  22. $position=false;
  23. echo "name:";
  24. }
  25. if($ element_name=="POSITION")
  26. {$name=false;
  27. $position=true;
  28. echo "위치:";
  29. }
  30. }
  31. function charData($parser_instance, $xml_data) //데이터를 읽을 때의 함수
  32. {
  33. 전역 $ 이름, $position;
  34. if($position)
  35. echo $xml_data."
    ";
  36. if($name)
  37. echo $xml_data."
    ";
  38. }
  39. function endElement($parser_instance, $element_name) //태그 이벤트를 종료하는 함수
  40. {
  41. 전역 $name,$position;
  42. $name=false;
  43. $position=false;
  44. }
  45. //xml 데이터 읽기 완료
  46. $htmlname=$id.".html";//$id는 여기에 전달된 ID를 직접 정의할 수 있습니다. user
  47. $htmlpath="archives/".$htmlname; //경로 변수 설정
  48. $content = ob_get_contents();//php 페이지에서 출력되는 모든 콘텐츠 가져오기
  49. $ fp = fopen($htmlpath, "w");
  50. fwrite($fp, $content);
  51. fclose($fp);
  52. ?>

재인쇄: http://www.cnblogs.com/awinlei/archive/2013/03/04/2942962.html

위 내용은 관련 내용을 포함하여 PHP를 사용하여 정적 HTML 페이지를 생성하는 두 가지 일반적인 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP is_writable 함수다음 기사:PHP is_writable 함수