$_SERVER는 개발 작업을 할 때 쓰이지 않는 곳이 없을 정도로 널리 사용되고 있는 PHP에서 정해진 예약 변수입니다.
print_r($_SERVER)이나 var_dump($_SERVER)를 해보시면 아시겠지만 배열 형태로 되어 있습니다.

  • $_SERVER['HTTP_HOST']
    도메인 부분에 대당 합니다.
    테스트 서버 도메인과 실서버 도메인이 다를 때 $_SERVER['HTTP_HOST']를 사용하면 실서버로 이전 했을 때 별도의 작업이 필요 없습니다.
  • $_SERVER['PHP_SELF']
    도메인 뒤에 경로 입니다.
    https://google.com/shop/product.php
  • $_SERVER['QUERY_STRING'] 
    쿼리스트링 부분 입니다.
    예)?stx=abcd
  • $_SERVER['REMOTE_ADDR']
    접속된 사용자의 공인 아이피입니다.
  • $_SERVER['DOCUMENT_ROOT']
    httpd.conf 에 설정된 웹서버의 루트 디렉토리입니다.

온라인 게임을 하다가 갑자기 블루스크린이 뜨면서 video tdr failure 라고 뜨면서 재부팅이 되었습니다.
온라인 게임이라서 신고 당하지 않을까 했지만 다행히 신고는 당하지 않았습니다.

시도 했던 방법을 몇 가지 적어 보겠습니다.
1. video에러 라고 떠서 nvidia 그래픽 카드 드라이버를 완전 삭제
DDU(Display Driver Uninstaller)
https://www.wagnardsoft.com/display-driver-uninstaller-DDU-

 

Display Driver Uninstaller (DDU)

Drivers removal utility and other tools.

www.wagnardsoft.com

삭제 후 최신 드라이버 설치

2. 비디오 카드 전원 뺐다 꼽아 봤습니다.
3. 램을 뺐다 꼽아 봤습니다.
4. 비디오 카드 팬에 쌓여 있던 먼지를 제거 했습니다.
5. 제어판 > 사운드 드라이버 사용하지 않기로 변경

윈도우 키 + S > 장치관리자 > 사운드, 비디오 및 게임 컨트롤러 부분에 nvidia 사운드는 사용하지 않으므로 사용하지 않기로 했습니다.

6. 모니터와 비디오 카드(=그래픽카드)는 HDMI로 연결되어 있는데, 다른 HDMI로 연결 해봤더니 잘 되고 있습니다.

'tech > windows' 카테고리의 다른 글

실제로 꼽힌 램 보다 적게 인식이 된다면?  (0) 2020.03.25
파일 찾기  (0) 2016.10.04
MS WINDOWS 7 설치 할 때 0X80300001에러  (3) 2012.02.27

조건에 따라서 다른 실행이나 변수에 담는 여러가지 행위를 할 때 보통은 if를 사용하는 경우가 있습니다.
때에 따라서는 switch가 더 클린한 코드를 만들수 있습니다.

*if

if($condition){
	$res = 1;
}else{
	$res = 2;
}

*switch

switch($condition){
	case "1" : $res = "1"; breack;
	case "2" : $res = "2"; breack;
}

물론 if도 짧게 가능 합니다.

if($condition) $res = 1;
else $res = 2;

혹은 삼항 연산자도 가능합니다.

$res = ($condition) ? 1 : 2;

사용자 정의 함수에 값을 가져 오는 방법은 여러가지가 있습니다.

function inside(){
	$month = "12";
	return $month;
}

위의 사용자 정의 함수는 inside를 실행하면 12가 있습니다.

$prefix = "month : ";
function inside($prefix){
	$month = "12";
	return $prefix.$month;
}

인자 값으로 $prefix의 값을 넣을수 있습니다.
인자 값에는 문자열뿐만 아니라 배열도 가능 합니다.

$prefix = array("year", "month", "day");
function inside($prefix=array()){
	$month = "12";
	return $prefix[0].$month;
}

인자 값과는 별도로 글로벌로 가져 올려면 아래와 같습니다.

$prefix = "month : ";
function inside(){
	global $prefix;
    
	$month = "12";
	return $prefix.$month;
}

'tech > PHP' 카테고리의 다른 글

자주 사용하는 $_SERVER  (0) 2023.12.04
또 다른 조건문 switch  (1) 2023.10.25
문자 변환, 변경, 치환  (0) 2023.10.22
PHP의 데이터 타입(data type)  (0) 2023.10.20
자바스크립트에는 없는 PHP 연관 배열  (0) 2023.10.19

PHP에서 문자 변경이나 치환, 공백 처리 할 때 str_replace를 사용 합니다.

<?php
echo str_replace("world","Peter","Hello world!");
?>

실행을 하면 Hello world!가 Hello Peter로 변경되어 있습니다.

1. 스트링(String)

<php
$hello = "hello world";
$hello2 = 'hello world';
echo $hello;

싱글 쿼트, 더블 쿼트 모두 스트링 타입입니다.

2. 인티저(Integer)
음수와 0, 양수입니다.(-2,147,483,648~2,147,483,647)

$number = "12";
echo (int)$number;

(int)를 추가하면 int형으로 캐스팅 됩니다.(형변환)

3.플로트(Float)

$float = 11.2;

4. 불리언(Boolean)

$check = true;
$check = false;

5. 배열(Array)

$arrays = array();

6. 객체(Object)

$color = new color("black", "white");

7. NULL

$is_null = null;

자바스크립트에서는 연관 배열이 없기 때문에 배열은 index와 index의 값을 가질수 있습니다.

var shopping = ["bread", "milk", "cheese", "hummus", "noodles"];
console.log(shopping);

연관 배열 처럼 할려면 javaScript에서는 Object를 사용해야 합니다.


아래는 PHP 배열 입니다.

$association = array("val" => 1, "txt" => "연관배열");
$association = array(
	array("val" => 1, "txt" => "연관1"),
	array("val" => 2, "txt" => "연관2"),
);

 

'tech > PHP' 카테고리의 다른 글

문자 변환, 변경, 치환  (0) 2023.10.22
PHP의 데이터 타입(data type)  (0) 2023.10.20
글자 길이가 길 때 글자 줄이는 방법(...)  (0) 2023.10.18
filter_var 숫자(int) 체크  (0) 2023.10.16
특정 날짜의 요일 구하기  (0) 2023.10.07
$str = "글자가 깁니다.글자가 깁니다.글자가 깁니다.글자가 깁니다.글자가 깁니다.";
$s_all = mb_substr($str, 0, 30, 'utf-8');
$suffix = "...";
if(strlen($s_all) >= strlen($s_all)) $suffix = "";
echo $s_all.$suffix;

보통은 텍스트가 길 때 ... 처리를 하게 되는데, 가끔 PHP에서 해야 할 때가 있습니다.
이런 경우 사용하면 됩니다.

문자형인지 숫자형인지 체크하는 방법은 여러가지가 있습니다.

1. is_integer
2. is_int(1번의 alias)
3. filter_var

소개할 것은 filter_var 입니다.
filter_var는 int를 체크하는 용도뿐만이 아니라 filter를 이용해서 여러가지 사용법이 있습니다.
FLOAT 체크 : FILTER_VALIDATE_FLOAT
이메일 체크 : FILTER_VALIDATE_EMAIL
URL 체크 : FILTER_VALIDATE_URL
MAC 어드레스 체크 : FILTER_VALIDATE_MAC

이 외에도 몇 가지가 있습니다.
(참고 URL : https://www.php.net/manual/en/filter.filters.validate.php)

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT)!== false) {
    echo("Variable is an integer");
} else {
    echo("Variable is not an integer");
}
?>

*https://www.w3schools.com/php/filter_validate_int.asp

*제목 검색(pd_name에 index 걸려 있음)
1. LIKE 유형1

SELECT * FROM rb_product
WHERE pd_name LIKE '%테스트%';


index 못탑니다.

2. LIKE 유형2(우 %)

SELECT * FROM rb_product
WHERE pd_name LIKE '테스트%';

 

index 탑니다.

3. LIKE 유형32(좌 %)

SELECT * FROM rb_product
WHERE pd_name LIKE '%테스트';

index 탑니다.

4. 커버링 인덱스

SELECT A.*
FROM (
SELECT pd_idx, pd_name
FROM rb_product
WHERE pd_name LIKE '%테스트%'
#LIMIT 100000, 100
) AS P
INNER JOIN rb_product AS A ON A.pd_idx=P.pd_idx

index 탑니다.

*기타 제목 검색

SELECT * FROM rb_product
WHERE INSTR(LOWER(pd_name),LOWER('테스트'))>0;


index 못탑니다.

*컨텐츠 TEXT data type
-- 데이터 길이 때문에 index key 생성 불가능합니다.

SELECT A.*
FROM (
SELECT pd_idx, pd_contents
FROM rb_product
WHERE pd_contents LIKE '%테스트%'
#LIMIT 100000, 100
) AS P
INNER JOIN rb_product AS A ON A.pd_idx=P.pd_idx

pd_contents 인덱스가 걸리지 않기 때문에 인덱스 못탑니다.

============================
*FULL TEXT index
cafe24 웹호스팅 mysql innodb_ft_min_token_size
show variables like 'innodb_ft_min%'
기본 3글자로 세팅이 되어 있는 상태이고, 웹호스팅이기 때문에 변경이 안됩니다.

cafe24 웹호스팅 사용하는 이상은 레코드의 양 많을 때는 TEXT  data type에 인덱스를 걸수 없기 때문에 TEXT data type의 검색은 지양해야 한다고 판단 됩니다.

 

+ Recent posts