작은숲:위키노트/PHP/사용법: 두 판 사이의 차이
잔글 문자열 찾아 바꾸기 - "분류:공유" 문자열을 "분류:위키노트/공유" 문자열로 |
잔글 Utolee90님이 PHP/사용법 문서를 넘겨주기를 만들지 않고 작은숲:위키노트/PHP/사용법 문서로 이동했습니다: 위키노트 문서 작은숲으로 이동 |
||
| (같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
| 1번째 줄: | 1번째 줄: | ||
강력한 스크립트 언어! 가벼운 웹 프로그래밍을 하기에 적합한 언어이다. | 강력한 스크립트 언어! 가벼운 웹 프로그래밍을 하기에 적합한 언어이다. | ||
== 자주 쓰는 함수 == | == 자주 쓰는 함수 == | ||
< | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
bool in_array(mixed $needle, array $haystack [, bool $strict = FALSE ]); | bool in_array(mixed $needle, array $haystack [, bool $strict = FALSE ]); | ||
| 7번째 줄: | 7번째 줄: | ||
bool mkdir(string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context]]]); | bool mkdir(string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context]]]); | ||
?> | ?> | ||
</ | </syntaxhighlight> | ||
== PHP 프레임워크, Laravel == | == PHP 프레임워크, Laravel == | ||
[[라라벨]](Laravel). 2015년 11월 14일에 나온 [https://www.xpressengine.com/ XE] [http://xpressengine.io/docs/3.0 3.0]에서 쓰기 시작한 PHP 프레임워크. Laravel을 설치하기 위해서는 PHP 5.3.7 이상의 버전과 MCrypt PHP Extension이 필요하다. | [[라라벨]](Laravel). 2015년 11월 14일에 나온 [https://www.xpressengine.com/ XE] [http://xpressengine.io/docs/3.0 3.0]에서 쓰기 시작한 PHP 프레임워크. Laravel을 설치하기 위해서는 PHP 5.3.7 이상의 버전과 MCrypt PHP Extension이 필요하다. | ||
| 15번째 줄: | 15번째 줄: | ||
== PHP 활용 == | == PHP 활용 == | ||
=== 서버 로드 확인 === | === 서버 로드 확인 === | ||
< | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
$load = @exec("/usr/bin/uptime"); | $load = @exec("/usr/bin/uptime"); | ||
| 24번째 줄: | 24번째 줄: | ||
if ($load) echo "<br />\nLoad average: {$load}\n"; | if ($load) echo "<br />\nLoad average: {$load}\n"; | ||
?> | ?> | ||
</ | </syntaxhighlight> | ||
=== 아파치에서 PHP가 구동되지 않을 때 === | === 아파치에서 PHP가 구동되지 않을 때 === | ||
[[위키노트 | [[작은숲:위키노트/아파치|아파치]] <code><nowiki>httpd.conf</nowiki></code> 설정 파일에 아래 내용 추가. | ||
< | <syntaxhighlight lang="apache"> | ||
AddType application/x-httpd-php .php .html .htm .php3 .php5 | AddType application/x-httpd-php .php .html .htm .php3 .php5 | ||
</ | </syntaxhighlight> | ||
=== timezone 설정하기 === | === timezone 설정하기 === | ||
최근 버전의 PHP에서는 timezone이 설정되지 않으면 아래와 같은 오류를 뿜어낸다. | 최근 버전의 PHP에서는 timezone이 설정되지 않으면 아래와 같은 오류를 뿜어낸다. | ||
| 36번째 줄: | 36번째 줄: | ||
</pre> | </pre> | ||
이를 해결하기 위해 소스 상단에 아래 코드를 넣거나 | 이를 해결하기 위해 소스 상단에 아래 코드를 넣거나 | ||
< | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
date_default_timezone_set('Asia/Seoul'); | date_default_timezone_set('Asia/Seoul'); | ||
?> | ?> | ||
</ | </syntaxhighlight> | ||
<code><nowiki>php.ini</nowiki></code> 파일에 timezone 설정을 추가한다. | <code><nowiki>php.ini</nowiki></code> 파일에 timezone 설정을 추가한다. | ||
<pre> | <pre> | ||
| 47번째 줄: | 47번째 줄: | ||
''via'' [http://ra2kstar.tistory.com/169 PHP timezone 설정하기] | ''via'' [http://ra2kstar.tistory.com/169 PHP timezone 설정하기] | ||
=== 배열이나 객체를 문자열로 만든 후 gzip 함수로 압축 === | === 배열이나 객체를 문자열로 만든 후 gzip 함수로 압축 === | ||
< | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
$array = array( ... ); | $array = array( ... ); | ||
| 55번째 줄: | 55번째 줄: | ||
print_r($array); | print_r($array); | ||
?> | ?> | ||
</ | </syntaxhighlight> | ||
위에서 <code>gzinflate()</code> 함수의 두번째 인자로 9 정도 주면 압축률은 더 좋아지지만 리소스를 많이 잡아먹고 압축률이 낮을 때보다 시간이 더 오래 걸린다. | 위에서 <code>gzinflate()</code> 함수의 두번째 인자로 9 정도 주면 압축률은 더 좋아지지만 리소스를 많이 잡아먹고 압축률이 낮을 때보다 시간이 더 오래 걸린다. | ||
''via'' [http://blog.naver.com/PostView.nhn?blogId=it_informer&logNo=150152515849 PHP에서 array를 string 형태로 고효율 압축, 변환하기] | ''via'' [http://blog.naver.com/PostView.nhn?blogId=it_informer&logNo=150152515849 PHP에서 array를 string 형태로 고효율 압축, 변환하기] | ||
=== 운영체제가 [[위키노트 | === 운영체제가 [[작은숲:위키노트/윈도우|윈도우]]인지 확인하기 === | ||
< | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
function is_windows() { | function is_windows() { | ||
return (DIRECTORY_SEPARATOR == '\\' ? true : false); | return (DIRECTORY_SEPARATOR == '\\' ? true : false); | ||
}?> | }?> | ||
</ | </syntaxhighlight> | ||
''via'' [http://php.net/tempnam tempnam() 함수 레퍼런스] | ''via'' [http://php.net/tempnam tempnam() 함수 레퍼런스] | ||
=== MSSQL의 datetime 형식의 필드 값 가져오기 === | === MSSQL의 datetime 형식의 필드 값 가져오기 === | ||
PHP에서 [[MSSQL]]의 datetime 형식의 필드의 값을 가져오면 <code><nowiki>Mar 03 2014 11:04AM</nowiki></code>와 같은 형태로 출력한다. 이를 <code><nowiki>2014-03-03 11:04:19</nowiki></code> 형태로 출력하고자 할 때는 <code><nowiki>php.ini</nowiki></code> 파일을 수정하거나 <code><nowiki>ini_set()</nowiki></code> 함수를 써서 설정을 변경해주도록 하자. | PHP에서 [[MSSQL]]의 datetime 형식의 필드의 값을 가져오면 <code><nowiki>Mar 03 2014 11:04AM</nowiki></code>와 같은 형태로 출력한다. 이를 <code><nowiki>2014-03-03 11:04:19</nowiki></code> 형태로 출력하고자 할 때는 <code><nowiki>php.ini</nowiki></code> 파일을 수정하거나 <code><nowiki>ini_set()</nowiki></code> 함수를 써서 설정을 변경해주도록 하자. | ||
< | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
// mssql datetime format | // mssql datetime format | ||
| 74번째 줄: | 74번째 줄: | ||
ini_set('mssql.datetimeconvert', 'Off'); | ini_set('mssql.datetimeconvert', 'Off'); | ||
?> | ?> | ||
</ | </syntaxhighlight> | ||
=== 하위 디렉토리까지 한꺼번에 만들기 === | === 하위 디렉토리까지 한꺼번에 만들기 === | ||
< | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
mkidr("/home/serv/archives/2014/0320", 0755, true); | mkidr("/home/serv/archives/2014/0320", 0755, true); | ||
?> | ?> | ||
</ | </syntaxhighlight> | ||
== 같이 보기 == | == 같이 보기 == | ||
* [[Zend optimizer]] | * [[Zend optimizer]] | ||
* [[MMCache]] | * [[MMCache]] | ||
* [[위키노트 | * [[작은숲:위키노트/PHP 함수]] | ||
* [[위키노트 | * [[작은숲:위키노트/정규 표현식|정규 표현식]] | ||
* [[위키노트 | * [[작은숲:위키노트/EUC2UTF|EUC2UTF]] | ||
* [[MVC]] | * [[MVC]] | ||
== 참고 == | == 참고 == | ||
2022년 5월 7일 (토) 19:19 기준 최신판
강력한 스크립트 언어! 가벼운 웹 프로그래밍을 하기에 적합한 언어이다.
자주 쓰는 함수
<?php
bool in_array(mixed $needle, array $haystack [, bool $strict = FALSE ]);
mixed strpos(string $haystack, mixed $needle [, int $offset = 0 ]);
bool mkdir(string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context]]]);
?>
PHP 프레임워크, Laravel
라라벨(Laravel). 2015년 11월 14일에 나온 XE 3.0에서 쓰기 시작한 PHP 프레임워크. Laravel을 설치하기 위해서는 PHP 5.3.7 이상의 버전과 MCrypt PHP Extension이 필요하다.
PHP DOM 파서, Goutte
Goutte(구뜨, 프랑스어, 물방울). Simple HTML DOM Parser의 거동이 약간 불안정하고, 복잡한 태그의 경우 정확히 해석하지 못하는 점이 있다. 실행 속도도 빠르고, 메모리도 적게 먹고, 태그 분석도 정확하게 하는가 보다. 다만 사용법이 좀 까다로운 듯. via 표준국어대사전 사전 데이터 만들기 작업후기
PHP 활용
서버 로드 확인
<?php
$load = @exec("/usr/bin/uptime");
if ($load and preg_match("/load average: ([,\.\d\s]+)$/", $load, $matches))
$load = $matches[1];
else
$load = null;
if ($load) echo "<br />\nLoad average: {$load}\n";
?>
아파치에서 PHP가 구동되지 않을 때
아파치 httpd.conf 설정 파일에 아래 내용 추가.
AddType application/x-httpd-php .php .html .htm .php3 .php5
timezone 설정하기
최근 버전의 PHP에서는 timezone이 설정되지 않으면 아래와 같은 오류를 뿜어낸다.
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Seoul' for 'KST/9.0/no DST' instead in index.php on line 138
이를 해결하기 위해 소스 상단에 아래 코드를 넣거나
<?php
date_default_timezone_set('Asia/Seoul');
?>
php.ini 파일에 timezone 설정을 추가한다.
date.timezone = Asia/Seoul
배열이나 객체를 문자열로 만든 후 gzip 함수로 압축
<?php
$array = array( ... );
$str_array = base64_encode(gzdeflate(serialize($array)));
print_r($str_array);
$array = unserialize(gzinflate(base64_decode($array_str)));
print_r($array);
?>
위에서 gzinflate() 함수의 두번째 인자로 9 정도 주면 압축률은 더 좋아지지만 리소스를 많이 잡아먹고 압축률이 낮을 때보다 시간이 더 오래 걸린다.
via PHP에서 array를 string 형태로 고효율 압축, 변환하기
운영체제가 윈도우인지 확인하기
<?php
function is_windows() {
return (DIRECTORY_SEPARATOR == '\\' ? true : false);
}?>
MSSQL의 datetime 형식의 필드 값 가져오기
PHP에서 MSSQL의 datetime 형식의 필드의 값을 가져오면 Mar 03 2014 11:04AM와 같은 형태로 출력한다. 이를 2014-03-03 11:04:19 형태로 출력하고자 할 때는 php.ini 파일을 수정하거나 ini_set() 함수를 써서 설정을 변경해주도록 하자.
<?php
// mssql datetime format
// Off - 2010-02-16 09:14:00
ini_set('mssql.datetimeconvert', 'Off');
?>
하위 디렉토리까지 한꺼번에 만들기
<?php
mkidr("/home/serv/archives/2014/0320", 0755, true);
?>