728x90

PHP Simple HTML DOM Parser

Description, Requirement & Features

  • A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way!
  • Require PHP 5+.
  • Supports invalid HTML.
  • Find tags on an HTML page with selectors just like jQuery.
  • Extract contents from HTML in a single line.

Download & Documents

Quick Start


// Dump contents (without tags) from HTML
echo file_get_html('http://www.google.com/')->plaintext

Feedback


Author: S.C. Chen (me578022@gmail.com)
Original idea is from Jose Solorzano's HTML Parser for PHP 4
Contributions by: Yousuke Kumakura (Attribute Filters)

SourceForge.net Logo


'WEB' 카테고리의 다른 글

리눅스 문자셋(charset) 설정  (0) 2018.05.17
PHP로 xml과 json 파싱  (0) 2018.05.17
PHP 메모리 부족  (0) 2018.05.14
날짜 계산(어제, 내일, 일주일 전, 한달 전...)  (0) 2018.05.14
[PHP] Define and Const  (0) 2018.05.13
728x90
PHP 메모리 부족
Fatal error: Allowed memory size of 134217728 bytes exhausted
memory exhausted in ofc_scatter.php
Open Flash Chart 2 메모리 부족

1 문제 상황[편집]

  • PHP의 메모리 제한 기본값은 128MB[1]이다.
  • 데이터가 너무너무 많을 경우 PHP에서 다음과 같이 메모리 부족 메시지가 발생하더라.

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in /var/www/html/open-flash-chart/php-ofc-library/ofc_scatter.php on line 5


2 설정값 확인[편집]

[root@zetawiki ~]# cat /etc/php.ini | grep memory_limit
memory_limit = 128M
→ 기본 설정은 128M로 제한되어 있다.
→ 아래 문단과 같이 이 제한을 늘려서 해결가능한 경우가 많다.
→ 다만 PHP 애플리케이션 자체의 문제로 인해 메모리를 과도하게 사용하는 경우에는 애플리케이션 수준의 근본적인 조치가 필요하다.

3 조치방법 1 (PHP 소스)[편집]

PHP 소스에서 아래 명령어를 수행하면 그 PHP 페이지 실행에 한하여 메모리 제한이 변경된다.

  • 메모리 제한 늘리기
ini_set('memory_limit','512M');
  • 메모리 무제한으로 풀기
ini_set('memory_limit','-1');

4 조치방법 2 (PHP 설정)[편집]

PHP 설정파일에서 메모리 제한 수정하기. 모든 PHP 파일에 적용되며, 적용시 아파치 재시작이 필요하다.

vi /etc/php.ini
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 128M
; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit = 512M

memory_limit를 찾아 파라미터를 적절한 값으로 수정하고 저장한다. 수정된 php.ini가 적용되려면 httpd 재시작이 필요하다.

[root@zetawiki ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

5 같이 보기[편집]

6 주석[편집]

  1. 이동 128×10242=134217728


'WEB' 카테고리의 다른 글

PHP로 xml과 json 파싱  (0) 2018.05.17
PHP Simple HTML DOM Parser  (0) 2018.05.17
날짜 계산(어제, 내일, 일주일 전, 한달 전...)  (0) 2018.05.14
[PHP] Define and Const  (0) 2018.05.13
Running latest Apache 2.4 with PHP 7.0 on CentOS 6  (0) 2018.05.08
728x90

어제, 오늘 날짜를 아래처럼 구하는 것은 잘못된 방법이다.


1
2
3
4
<?
$today = date('Ymd');
$yesterday = $today - 1;
?>
cs


위 결과는 매달 1일이 되었을 때 어제 날짜로 00일을 구한다.

예) 2013-02-01의 어제를 2013-02-00으로 표시.

 

정확히 구하려면 아래 참고.


1
2
3
4
5
6
7
8
9
10
11
12
<?
date("Y-m-d H:i:s", strtotime("-1 day")); // 어제
date("Y-m-d H:i:s", strtotime("now")); // 현재
date("Y-m-d H:i:s", strtotime("+1 day")); // 내일
date("Y-m-d H:i:s", strtotime("+1 week")); // 일주일 후
date("Y-m-d H:i:s", strtotime("-1 month")); // 한달 전
date("Y-m-d H:i:s", strtotime("+1 month")); // 다음달
date("Y-m-d H:i:s", strtotime("+1 week 2 days 3 hours 4 seconds")); // 1주 2일 3시간 4초 후
date("Y-m-d H:i:s", strtotime("next Thursday")); // 다음주 목요일
date("Y-m-d H:i:s", strtotime("last Monday")); // 지난 월요일
date("Y-m-d H:i:s", strtotime("10 September 2013")); // 2013년 9월 10일
?>
cs



출처: http://whiterussian.tistory.com/32 [화이트 러시안]

출처: http://whiterussian.tistory.com/32 [화이트 러시안]

출처: http://whiterussian.tistory.com/32 [화이트 러시안]

출처: http://whiterussian.tistory.com/32 [화이트 러시안]

728x90

define() 함수를 사용해서 상수를 정의할 수 있습니다. PHP 5.3.0부터 클래스 정의 밖에서 const 키워드를 사용할 수도 있습니다. 상수가 한번 정의되면, 변경하거나 해제(undefine)할 수 없습니다.

PHP 5.6 이전에는 스칼라 데이터(booleanintegerfloat and string)만 상수로 등록할 수 있습니다. 5.6 이후에는 스칼라 표현식을 상수로 정의할 수 있고, array 또한 등록할 수 있습니다. 또, resource를 상수로 정의할 수는 있지만 예상치 못한 문제를 야기할 수 있으므로 사용하지 않을 것을 권고합니다.

단순히 상수명을 써서 상수값을 얻을 수 있다. 변수와는 달리 $가 상수명 앞으로 오면 안된다 동적으로 상수명을 취하려한다면 constant()함수로 상수값을 가져올수 있다. 정의된 모든 상수 목록을 구하려면 get_defined_constants() 함수를 쓴다.

Note상수와 (전역)변수는 서로 다른 네임스페이스(namespace)상에 있다. 이말의 의미는 예를 들면 TRUE와 $TRUE은 일반적으로 다르다는것이다.

해제된 상수를 사용한다면, PHP는 상수명 자체를 쓴것이라고 가정할것이다 즉,string으로 인식할것이다. (CONSTANT vs "CONSTANT") E_NOTICE로 이런 일이 발생했는지 알수 있다. 왜 $foo[bar]가 잘못됐는지 (bar를 상수로 define() 하지않았다면) 매뉴얼을 참고한다. 단순히 상수가 설정되었는지만 확인하려 한다면 defined()함수를 쓰면 됩니다.

다음은 상수와 변수의 차이점이다:

  • 상수는 이름 앞에 달러표시($)가 없다.
  • PHP 5.3 이전에는,단순한 할당 연산이 아니라 define() 함수로만 정의될수 있다.
  • 상수는 변수의 유효범위 규칙과는 상관없이 어느곳에서든 정의되거나 값을 취할수 있다.
  • 상수는 한번 설정되면 재정의하거나 해제할수 없을것이다; 그리고
  • PHP 5.6 이후에서는, 상수는 스칼라 값 혹은 array의 값으로만 평가됩니다. 상수 스칼라 표현식에 array를 쓸 수 있습니다. (예를들어, const FOO = array(1,2,3)[0];) 하지만 최종 결과는 스칼라 값이어야 합니다.

Example #1 상수 정의하기

<?php
define
("CONSTANT""Hello world.");
echo 
CONSTANT// "Hello world."을 출력한다
echo Constant// "Constant"를 출력하고 경고가 뜬다.
?>

Example #2 const 키워드를 사용해서 상수 정의하기

<?php
// PHP 5.3.0부터 작동
const CONSTANT 'Hello World';

echo 
CONSTANT;

// PHP 5.6.0 부터 작동
const ANOTHER_CONST CONSTANT.'; Goodbye World';

echo 
ANOTHER_CONST;
?>

Note:

define()을 통하여 정의하는 상수와 달리, const 키워드를 통하여 정의하는 상수는 컴파일 시에 정의되기에 최상위 영역에서 선언해야 합니다. 함수, 루프, if구문이나 trycatch블록 안에서는 선언할 수 없습니다.

참고: 클래스 상수.

add a note add a note

User Contributed Notes 1 note

login at (two)view dot de ¶
8 months ago
Just a quick note:
From PHP7 on you can even define a multidimensional Array as Constant:

define('QUARTLIST',array('1. Quarter'=>array('jan','feb','mar'),'2.Quarter'=>array('may','jun','jul'));

does work as expected.


+ Recent posts