>  기사  >  PHP7.2 버전 성능 소개

PHP7.2 버전 성능 소개

小云云
小云云원래의
2018-05-14 13:49:5811847검색

이 글에서는 PHP7.2 버전의 성능을 주로 소개하여 모든 사람이 PHP7.2에 대해 더 명확하게 이해할 수 있도록 도움을 드리고자 합니다.

1. 이전 버전과 호환되지 않는 변경 사항

Core:

  • 함수는 gettype()을 반환합니다. 자원(닫음) , 이전의 알 수 없는 유형을 대체합니다.

  • __PHP_Incomplete_Class 클래스 객체의 경우 is_object() 함수는 true를 반환합니다.

  • Netware OS에 대한 지원이 제거되었습니다.

  • 배열 유형을 객체 유형((object) 또는 settype())으로 변환하면 정수 키가 속성 이름으로 변환되는 문제가 해결됩니다. 이전 버전의 숫자 키는 속성 이름의 문제로 사용할 수 없습니다.

  • 객체 유형이 배열 유형으로 변환되는 경우((array) 또는 settype()), 객체의 속성이 배열에 매핑되는 경우(get_object_vars( )) 정수 속성이 숫자 키로 변환되어 이전 버전에서 정수 속성에 액세스할 수 없었던 문제가 해결되었습니다.

  • 정의되지 않은 상수에 대한 부적격 참조는 경고 수준 오류를 발생시켜 이전 알림 수준을 대체하고 이후 버전은 오류 수준 오류가 됩니다.

  • 지원되는 최소 Windows 버전은 Windows 7 및 Windows Server 2008 R2입니다.

  • 기본 trait 속성 값의 호환성 검사 동작을 취소합니다.

  • object은 클래스 이름으로 사용되지 않습니다.

BcMath

  • fmod() 함수와 동일합니다. bcmod() 함수는 모듈을 취소합니다. o 연산(%), 즉 10진수 값 부분적으로 정수로 잘립니다. 예: bcmod('4', '3.5')는 1 대신 0.5를 반환합니다.

Hash

  • hash_hmac(), hash_hmac_file(), hash_p bk df2()hash_init()(옵션 매개변수 HASH_HMAC), 이러한 함수는 더 이상 비암호화 해시 함수를 지원하지 않습니다.

JSON

  • json_decode() 함수의 두 번째 매개변수 assoc이 null인 경우 옵션은 옵션에서 JSON_OBJ를 지원합니다. ECT_AS_ARRAY가 활성화됩니다. 이전 버전에서는 이 매개변수가 무시되었습니다.

Session

  • 제거됨 register_globals 관련 코드, "!"는 $_SESSION에서 사용할 수 있습니다. 키 이름에.

  • session은 세션 상태를 올바르게 관리하고 잘못된 작업을 금지하는 데 사용됩니다. 이 변경 사항은 코드에 문제가 있을 때 실행됩니다. 불행하게도 이 문제가 발생하면 코드에 문제가 있다는 의미입니다. 이러한 함수는 올바른 세션 상태를 설정하거나 반환하는 데 사용됩니다.

  • session_unset(), session_write_close()/session_commit(), session_abort(), session_reset(), 이 함수는 절대 값을 반환하지 않습니다. 반환된 부울 값이 됩니다. 빈 매개변수를 허용하고 이러한 매개변수가 비어 있는지 확인합니다.

  • session_start(), session_set_cookie_params(), session_name(), session_module_name() , session_set_save_handler(), session_regenerate_id( ), session_cache_limiter(), session_cache_expire(), session_unset(), session_destroy(), session_write_close()/session_commit() , session_reset(), 이 함수는 유효하지 않은 세션 상태 및 http 헤더 상태를 비활성화하고 올바른 부울 값 또는 숫자 값을 반환합니다.

  • session.name, session.save_path, session.cookie_lifetime,session.cookie_path, session.cookie_domain, session. Cookie_httponly, Session.cookie_secure, Session.use_cookies, Session.use_only_Cookies, Session.use_mode er_check , Session.cache_limiter , session .cache_expire, session.lazy_write, session.save_handler, session.serialize_handler, session. session.gc_pior, session.gc_maxlifetime , 이러한 ini 값 설정은 ini_set() 함수에 의해 성공적으로 호출되어야 합니다. 잘못된 ini 수정 작업은 성공하지 못합니다. 세션을 올바르게 관리할 수 있으므로(

  • session_start()
  • ) E_ERROR 수준의 일부 오류 메시지가 E_WARNING 수준으로 변환됩니다. 세션은 더 이상 유효하지 않고 쓸모없는 세션으로 초기화되지 않습니다.

  • 헤더 정보가 전송되면 현재 새로운 ini 값 설정은 유효하지 않습니다(
  • session_name(을 통해) ), session_module_name(), session_save_path(), session_cache_limiter()session_cache_expire() 이 함수들) .

    이제 이러한 올바른 동작은 CLI 명령줄 모드의 관리 세션 상태에 영향을 미칩니다. 웹 애플리케이션에서와 같이 출력 버퍼링을 사용하면 cli 스크립트의 문제가 해결됩니다.


  • Standard

버전 7.1 이후 64비트 시스템에서 동일한 시드에 대해 mt_rand()

rand() 버전 7.1 임의의 숫자 생성 순서는 다를 수 있습니다.

2. 새로운 기능

Core

    매개변수 유형이 생략됩니다. 이는 리스코프 평형 원리의 매개변수 유형의 반변성을 따릅니다.
  • 상속된 추상 클래스가 상속된 추상 클래스의 추상 메서드를 재정의하도록 허용합니다.

  • 그룹화된 네임스페이스에 후행 쉼표를 허용합니다.

  • 객체 유형의 주석이 허용됩니다.

DBA

  • LMDB 백엔드에 대한 지원을 구현했습니다.

JSON

  • json_encode()json_decode()에서 에 대한 지원이 추가되었습니다. JSON_INVALID_IGNOREJSON_INVALTD_UTF8_SUBSTITUTE 지원, 이전에 유효하지 않은 UTF-8 인코딩 유형을 대체합니다.

OCI8

  • Oracle 데이터베이스의 TAF(투명한 애플리케이션 장애 조치)에 대한 지원이 추가되었습니다.

PCRE

  • 로컬 PCRE_DUPNAMES 옵션을 수정하기 위해 내부 옵션(j)을 추가했습니다.

Sodium

  • 새로운 암호화 확장 프로그램.

SQLite3

  • 은 BLOB 작성을 구현합니다.

Standard

  • libargon2로 PHP를 컴파일할 때 단순화된 해시 비밀번호 API가 Argon2를 지원하도록 업데이트되었습니다.

  • Windows 플랫폼은 proc_nice() 기능을 지원합니다.

Zip

  • 암호화된 아카이브 읽기/쓰기, libzip 1.2.0에 따라 다름, 새 방법:  ZipArchive::setEncryptionName($name, $method[,$password ] ); ZipArchive:: setEncryptionIndex($index, $method[,$password]); 새로운 상수: ZipArchive:: EM_AES_128 ZipArchive::EM_AES_256

  • zip 스트림 컨텍스트에서 "비밀번호"를 수락합니다.

  • ZipArchive는 ZipArchive::count() 메서드를 추가하여 가산성을 구현합니다.

3. SAPI 모듈 변경

4. 더 이상 사용되지 않는 기능

다음은 php8.0 버전에서 더 이상 사용되지 않는 기능입니다.

Core

  • 프로필 추적 오류는 삭제됩니다.

  • __autoload()은 더 이상 사용되지 않으며 대신 spl_autoload_register()를 사용합니다.

  • (unset)은 더 이상 사용되지 않습니다. 이 변경 사항은 unset($var)의 언어 구조에 영향을 미치지 않습니다.

  • create_function() 함수는 더 이상 사용되지 않으며 대신 익명 함수를 사용합니다.

  • each() 함수 구조는 폐기되고 foreach() 루프로 대체됩니다.

Exif

  • read_exif_data()은 더 이상 사용되지 않습니다. 대신 exif_read_data()를 사용하세요.

GD

  • png2wbmp()jpeg2wbmp()은 더 이상 사용되지 않습니다.

GMP

  • gmp_random()은 더 이상 사용되지 않습니다. 대신 gmp_random_bits() 또는 ()를 사용하세요.

Intl

  • INTL_IDNA_VARIANT_2003INTL_IDNA_VARIANT_UTS46을 위해 더 이상 사용되지 않습니다. 대신.

Mbstring

  • mbstring.func_overload에 대한 구성 파일은 더 이상 사용되지 않습니다. 인수 없이

    parse_str()
을 호출하는 것은 더 이상 사용되지 않습니다. 문자열 매개변수를 사용하여

호출
  • assert()

    은 더 이상 사용되지 않으며 대신 정규식을 사용합니다. 5.

  • PASSWORD_ARGON2I로 설정된 경우
  • Standard

기능이 변경되었습니다.

,

password_hash()는 Argon2 해시를 생성할 수 있습니다.

  • PASSWORD_ARGON2I를 사용할 때 기본적으로 memory_cost, time_cost 옵션이 설정될 수 있습니다. 이러한 옵션의 기본값은

    PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • 입니다. 설정하지 않으면 기본값은

    PASSWORD_ARGON2_DEFAULT_TIME_COSTPASSWORD_ARGON2_DEFAULT_THREADS입니다. password_verify()는 Argon2 해시를 확인할 수 있습니다.

    password_get_info()
  • password_needs_rehash()는 Argon2 해시를 허용할 수 있습니다.

  • mail()/mb_send_mail()은 배열 $extra_header을 허용합니다. 배열 매개변수는 RFC 2822에 대해 확인됩니다. 배열 형식: php $extra_headers = [ 'Header-Name' => 'Header value', 'Multiple' => ['One header', 'Another header'], 'Multiline' = "FirstLinern SecondLine", ];

  • 잘못된 매개변수가 전달되면 count() 함수가 경고를 발생시킵니다. 빅엔디안 및 리틀엔디안 바이트 순서에서

    pack()
  • unpack()은 float 및 double 유형을 지원합니다.

  • number_format() 함수는 0 값에 음수 기호가 포함되지 않도록 합니다. XML

  • utf8_encode()

utf8_decode()

함수가 문자열로 표준 확장으로 이동되었습니다.

  • 6. 새로운 기능 Core

추가됨 stream_istty()

.

  • 추가됨

    sapi_windows_vt100_support().

  • DOM
  • DomNodeList

    은 Countable을 구현하고
DomNodeList::count()

를 추가합니다.

  • DOMNamedNodeMapDOMNamedNodeMap::count()을 추가하여 Countable을 구현합니다.

  • FTP

    • 추가됨 ftp_append().

    GD

    • imagesetclip()imagegetclip()을 추가했습니다.

    • imageopenpolygon()을 추가했습니다.

    • imagesolution()을 추가했습니다.

    • imagecreatefrombmp()imagebmp()을 추가했습니다.

    Hash

    • 이 추가되었습니다. hmac_algos().

    Mbstring

    • mb_chr()mb_ord()을 추가했습니다.

    • 추가됨 mb_scrub.

    OCI8

    • 추가됨 oci_register_taf_callback() oci_unregister_taf_callback() Oracle 데이터베이스의 TAF(투명한 애플리케이션 장애 조치)를 지원합니다.

    Sockets

    • 추가됨 socket_addrinfo_lookup(), socket_addrinfo_connect() , socket_addrinfo_bind()socket_addrinfo_explain() .

    SPL

    • 추가됨 spl_object_id().

    7. 새로운 클래스 및 인터페이스

    8. 확장 및 SAPI

    Mcypt

    • 더 이상 사용되지 않는 mcrypt 확장 프로그램이 PECL로 이동되었습니다.

    • libmcrypt는 2007년 이후 유지관리되지 않았으므로 이 확장 프로그램을 계속 사용하지 않는 것이 좋습니다.

    9. 확장 기능에 대한 기타 변경 사항

    EXIF

    • Sony, Pentax, 미놀타, 시그마/포베온, AGFA, 교세라, 리코 & 엡손.

    • exif_read_data()exif_t ​​​​humbnail()은 스트림을 첫 번째 매개변수로 전달하는 것을 지원합니다.

    GD

    • --enable-gd-native-ttf 구성 옵션이 제거되었습니다.

    • imagegd()는 트루컬러 이미지를 트루컬러 이미지로 저장하여 이전 변환을 팔레트로 대체합니다.

    • 시스템 libgd로 컴파일할 때 mageantialias()도 지원됩니다.

    Mbstring

    • mb_check_encoding()은 배열 매개변수를 허용하고 해당 키와 값을 재귀적으로 확인합니다.

    • mb_convert_encoding()은 해당 값의 인코딩이 재귀적으로 변환될 수 있는 배열 매개변수를 허용합니다.

    PDO_OCI

    • --with-pdo-oci 구성 구문은 더 이상 Oracle 클라이언트에서 사용할 수 없습니다.

    pdo_sqlite

    • sqlite3_prepare_v2()sqlite3_close_v2()를 사용하세요. 이전 기능을 대체합니다.

    10. 새로운 전역 상수

    Core

    • PHP_FLOAT_DIG

    • PHP_FLOAT_EPSILON

    • PHP_FLOAT_MIN

    • PHP_FLOAT_MAX

    • PHP_OS_FAMILY

    Fileinfo

    • FILEINFO_EXTENSION

    GD

    • IMG_EFFECT_MULTIPLY

    • IMG_BMP

    PCRE

    • PREG_UNMATCHED_AS_NULL

    표준:

    • PASSWORD_ARGON2_DEFAULT_MEMORY_COST

    • PASSWORD_ARGON2_DEFAULT_TIME_COST

    • PASSWORD_ARGON2_DEFAULT_THREADS

    • PASSWORD_ARGON2I

    11 INI 파일 처리 변경 사항

    sql.safe_ 모드

    • 이 INI 옵션이 제거되었습니다.

    realpath_cache_size

    • 기본값은 4096k입니다.

    opcache.fast_shutdown

    • 이 INI 옵션이 제거되었습니다. fast_shutdown 처리 변형이 PHP 커널에 통합되었으며 프로덕션 환경에서 기본적으로 활성화됩니다.

    12. Windows 지원

    • VT100 콘솔 모드를 지원합니다.

    13. 기타 변경 사항

    컴파일 시스템

    • 최소 지원 버전은 2.64입니다.

    관련 권장 사항:

    Win10에서 IIS, MySQ, nginx, php7.1.7을 설치하는 방법은 무엇입니까?

    PHP7의 새로운 기능 소개

    PHP7의 성능을 두 배로 높이는 비결에 대한 자세한 설명

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