> 백엔드 개발 > PHP 튜토리얼 > PHP의 몇 가지 흥미로운 차이점은 무엇입니까?

PHP의 몇 가지 흥미로운 차이점은 무엇입니까?

WBOY
풀어 주다: 2016-07-29 08:35:28
원래의
1463명이 탐색했습니다.

작은따옴표 '와 큰따옴표 "의 차이점:
우선 작은따옴표가 큰따옴표보다 효율적입니다. 큰따옴표는 내용을 전처리하기 때문입니다.
예: '$value' 출력 문자 $value; "$value"는 $value 변수의 값을 출력합니다.
char와 varchar의 차이점:
char는 고정 길이이고 varchar는 가변 길이입니다. varchar는 데이터 길이 변경이 저장소의 페이지 할당에 영향을 미칠 때 발생합니다.
char와 varchar2는 서로 상충되며
varchar2는 char보다 공간을 절약합니다. char보다 약간 덜 효율적입니다. 즉, 효율성을 얻으려면 일정량의 공간을 희생해야 합니다. 이는 데이터베이스 설계에서 종종 "공간을 효율성으로 교환"하는 것입니다.
varchar2는 절약하지만. char보다 space를 사용하게 되면 varchar2 컬럼을 자주 수정하게 되면, 더욱이 매번 수정되는 데이터의 길이가 달라지게 되어 'Row Migration' 현상이 발생하게 되어 중복된 I/O가 발생하게 되므로 반드시 피해야 할 사항이다. 이 경우에는 varchar2 대신 char를 사용하는 것이 좋습니다.
mysql_connect와 mysql_pconnect의 차이점
excel php club 포럼에 있는 친구의 말 인용:
PHP에서 mysql_pconnect() 구현:
사실 mysql_pconnect() 자체는 많은 처리를 수행하지 않고, PHP 실행이 완료된 후 mysql 연결을 적극적으로 닫지 않는다는 점만 다릅니다.
차이점은 다음과 같습니다. mysql_pconnect()와 mysql_connect() 사이:
cgi 모드에서:
PHP가 cgi 모드에서 실행되면 기본적으로 pconnect와 connect 사이에는 차이가 없습니다. 왜냐하면 cgi 모드에서는 각 PHP 액세스가 프로세스를 시작하기 때문입니다. 액세스가 완료되고 프로세스가 종료되며 모든 리소스가 해제됩니다.
아파치 모듈 모드 다음:
아파치가 프로세스 풀을 사용하므로 PHP가 아파치 모듈로 실행될 때 차이점은 httpd 프로세스가 됩니다. 이는 pconnect로 열린 mysql 연결 리소스가 사용되는 것을 방지하여 다음 연결 요청이 있을 때 재사용할 수 있도록 합니다.
동시 액세스 볼륨이 있을 때 허용됩니다. Apache의 경우 pconnect를 사용하므로 PHP는 DB에 반복적으로 연결하는 시간을 절약하므로 액세스 속도가 더 빨라집니다.
그러나 Apache의 동시 액세스가 큰 경우에는 이 점을 이해하기 쉽습니다. , pconnect를 사용하는 경우 이전 httpd 프로세스에서 사용했던 mysql 연결이 닫히지 않았기 때문에 mysql이 최대 연결에 도달했기 때문일 수 있습니다.
예:
mysql 최대 연결 수를 500으로 설정하고, apache에 대한 최대 동시 접속 수를 2000으로 설정한 경우
모든 접근에는 db 접근이 필요하고 작업 시간은 길어진다고 가정합니다
현재 500개의 httpd 요청이 종료되지 않은 경우... 이후의 httpd 프로세스는 mysql에 연결할 수 없습니다(최대 mysql 연결 수에 도달했기 때문에). 또는 현재 500개의 httpd 프로세스만 종료될 수 있습니다.
사실 xgy_p 테스트에서의 연산이 상대적으로 간단하다면 pconnect가 connect보다 훨씬 효율적이고 jsp를 사용한 커넥션 풀의 속도에 가깝다는 것도 잘 설명하고 있습니다. 왜냐하면 이 때 httpd 프로세스는 지속적으로 재사용이 가능하기 때문입니다.
DB 작업이 복잡하고 시간이 오래 걸리는 경우 httpd는 많은 동시 프로세스를 포크하게 되며, 먼저 생성된 httpd 프로세스는 db 연결을 해제하지 않으므로 문제가 발생합니다. 나중에 생성된 httpd 프로세스는 db에 연결할 수 없습니다. 이는 다른 httpd 프로세스의 mysql 연결이 재사용되지 않기 때문입니다. 따라서 많은 연결 시간 초과가 발생합니다. 예를 들어 초기 1000 동시 연결 테스트에서는 거의 모든 연결 시간 초과가 발생했습니다.
- --
(돌아보면 jsp가 순수 db 커넥션 풀을 사용한다면 mysql 커넥션 풀이 한계에 도달해서 접속이 안되는 문제는 없을 것이다. )
따라서 동시 접속량이 많지 않은 경우 pconnect를 사용하면 접속 속도만 향상될 수 있지만, 동시 접속량이 증가한 후에는 pconnect를 사용할지 여부가 결정됩니다. 다시 프로그래머의 선택에 달려있습니다..
개인적으로 PHP는 실제로 MySQL에 연결하기 위해 연결 풀을 사용하지 않는다고 생각합니다. pconnect는 단지 Apache의 프로세스 풀을 빌리는 것과 동일하므로 pconnect는 DB 액세스 효율성을 향상시킬 수 없습니다. 동시접속량이 많은 경우에는 php가 jsp보다 열등합니다.
현재 상황에서는 mysql_connect를 사용하는 것이 가장 좋다고 생각합니다. >include와 require의 차이점
phpchina.cn에서 가져온 다음
PHP의 require() 성능은 include()와 유사합니다. 차이점은 include()의 경우 include()가 실행될 때마다 파일을 읽고 평가해야 하는 반면, require()의 경우 파일은 한 번만 처리된다는 것입니다(실제로 파일 내용은 require() 문을 대체합니다). . 이는 이러한 명령 중 하나를 포함하는 코드와 여러 번 실행될 수 있는 코드가 있는 경우 require()를 사용하는 것이 더 효율적이라는 것을 의미합니다.반면에 코드가 실행될 때마다 다른 파일을 읽거나 파일 집합을 반복하는 루프가 있는 경우 포함하려는 파일 이름에 대한 변수를 설정할 수 있으므로 include()를 사용하세요. 인수가 다음인 경우()를 포함할 때 이 변수를 사용하십시오.
include가 실행될 때 포함된 파일에 오류가 발생하면 즉시 중지되지 않지만 require는 프로그램을 즉시 종료하고 더 이상 실행되지 않습니다.
include는 루프에서 사용할 수 있지만 require는 사용할 수 없습니다.
다음은 ricky에서 따온 것입니다
1, require는 무조건 포함됩니다. 즉, require가 프로세스에 추가되면 조건이 true인지 아닌지에 관계없이 require가 먼저 실행됩니다.
이렇습니다. require에는
if($a = 1){
$file = '1.php'
}else{
$file = '와 같은 파일을 가리키는 변수가 포함될 수 있으므로 더 이상 적용할 수 없습니다. 2.php';
}
require($file);
2, 포함된 파일이 없거나 구문 오류가 있지만 include가 아닌 경우 require가 치명적입니다.
3, include가 있습니다. 반환 값이지만 require는 그렇지 않습니다(이 때문에 require가 include보다 빠릅니다)
$login = include('test.php')
if(!empty($login)){
echo "파일이 성공적으로 포함되었습니다";
}else{
echo " 파일 포함에 실패했습니다";
}
파일을 참조하는 방법에는 require와 include가 있습니다. 두 가지 방법은 서로 다른 사용 유연성을 제공합니다.
Require는 require("MyRequireFile.php");로 사용됩니다. 이 함수는 일반적으로 PHP 프로그램이 실행되기 전에 먼저 require에 지정된 파일을 읽어서 PHP 프로그램 웹 페이지의 일부로 만듭니다. 일반적으로 사용되는 기능을 이러한 방식으로 웹 페이지에 도입할 수도 있습니다.
Include는 include("MyIncludeFile.php");로 사용됩니다. 이 기능은 일반적으로 흐름 제어의 처리 부분에 배치됩니다. PHP 프로그램 웹페이지는 포함 파일을 읽을 때만 해당 파일을 읽습니다. 이러한 방식으로 프로그램 실행 프로세스를 단순화할 수 있습니다.
isset()과 empty()의 차이점
둘 다 변수를 테스트하는 데 사용되지만 isset()은 변수에 값이 할당되었는지 테스트하고,empty()는 할당된 변수가 비어 있는지 테스트합니다.
PHP에서 값을 할당하지 않고 변수를 참조하는 경우 허용되지만 변수에 null 값이 할당된 경우 $foo="" 또는 $foo=0 또는 $foo라는 알림 메시지가 표시됩니다. =false이면 공백($foo)은 true를 반환하고, isset($foo)도 true를 반환합니다. 즉, 빈 값을 할당하면 변수 등록이 취소되지 않습니다.
변수 등록을 취소하려면 unset($foo) 또는 $foo=NULL을 사용할 수 있습니다.

위 내용은 PHP 튜토리얼의 내용을 포함하여 PHP와 PHP의 몇 가지 흥미로운 차이점을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿