Π”Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния

ИзмСнСния Π² ядрС

Π―Π΄Ρ€ΠΎ PHP

ВрСмя высокого Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ (hrtime()) Π² macOS Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ clock_gettime_nsec_np(CLOCK_UPTIME_RAW) API вмСсто mach_absolute_time().

CGI/CLI

ΠžΠΏΡ†ΠΈΡ -z ΠΈΠ»ΠΈ --zend-extension ΡƒΠ΄Π°Π»Π΅Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π»Π°. ВмСсто Π½Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ -d zend_extension=[path].

PDO_ODBC

ИзмСнСно ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Π±ΠΎΠ»ΡŒΡˆΠΈΡ… столбцов. ВмСсто извлСчСния Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠΎ 256 Π±Π°ΠΉΡ‚ PDO_ODBC Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ большСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°; Π² настоящСС врСмя это Ρ€Π°Π·ΠΌΠ΅Ρ€ страницы Π·Π° Π²Ρ‹Ρ‡Π΅Ρ‚ΠΎΠΌ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° строку. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ SQL_NO_TOTAL Π² SQLGetData, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π»ΡƒΡ‡ΡˆΠ΅.

ИзмСнСния Π² модулях SAPI

CLI

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ слишком Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ процСсса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ cli_set_process_title() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС, Π° Π½Π΅ ΠΊ ΠΌΠΎΠ»Ρ‡Π°Π»ΠΈΠ²ΠΎΠΌΡƒ ΡƒΡΠ΅Ρ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ названия.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая опция --ini=diff для Π²Ρ‹Π²ΠΎΠ΄Π° INI-настройки, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ установлСнной ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

FPM

FPM с httpd ProxyPass ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ скрипту. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° INI-настройка fastcgi.script_path_encoded, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° доступа FPM Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ log_limit.

Π˜Π·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Ѐункция grapheme_extract() ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ $next ΠΏΡ€ΠΈ пропускС нСдопустимых Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π°ΠΉΡ‚ΠΎΠ². Π Π°Π½Π΅Π΅ Π±Ρ‹Π»ΠΈ случаи, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Π³Ρ€Π°Ρ„Π΅ΠΌΠ°, Π° Π½Π΅ Π½Π° ΠΊΠΎΠ½Π΅Ρ†.

Из сигнатуры Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ transliterator_get_error_code(), transliterator_get_error_message(), TransLiterator::getErrorCode() ΠΈ TransLiterator::getErrorMessage() ΡƒΠ±Ρ€Π°Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ значСния false Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ $locale: grapheme_strpos(), grapheme_stripos(), grapheme_strrpos(), grapheme_strripos(), grapheme_substr(), grapheme_strstr() ΠΈ grapheme_stristr().

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ LDAP

Ѐункция ldap_get_option() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСниС null, ΠΊΠ°ΠΊ ΠΈ функция ldap_set_option(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ извлСчСния Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ libxml

Π’ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ libxml_set_external_entity_loader() ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π½Π° true.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ OpenSSL

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ $digest_algo функциям openssl_public_encrypt() ΠΈ openssl_private_decrypt(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для заполнСния OAEP.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ $padding функциям openssl_sign() ΠΈ openssl_verify(), openssl_sign() and openssl_verify() have a new parameter $padding, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΏΠΎΠ΄ΠΊΠ»Π°Π΄ΠΊΡƒ RSA PSS.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ $cipher_algo Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ openssl_cms_encrypt() ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строкой с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡˆΠΈΡ„Ρ€Π°. Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ AES GCM для Π΄Π°Π½Π½Ρ‹Ρ… с Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ PCNTL

Π’ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pcntl_exec() ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π½Π° false.

Ѐункция pcntl_waitid() ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ resource_usage для сбора Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ процСссС.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ PDO_PGSQL

ΠœΠ΅Ρ‚ΠΎΠ΄ Pdo\Pgsql::copyFromArray() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° iterable.

ΠœΠ΅Ρ‚ΠΎΠ΄ Pdo\Pgsql::setAttribute() ΠΈ Pdo\Pgsql::prepare() ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ установку значСния PDO::ATTR_PREFETCH Π² 0, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ систСму Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ. Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ PostgreSQL

Ѐункция pg_copy_from() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° iterable.

Ѐункция pg_connect() провСряСт, содСрТит Π»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ connection_string Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±Π°ΠΉΡ‚.

Ѐункция pg_close_stmt() провСряСт, содСрТит Π»ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ statement_name Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π±Π°ΠΉΡ‚.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ POSIX

Ѐункция posix_ttyname() устанавливаСт last_error Π² EBADF ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ дСскриптора.

Ѐункция posix_isatty() Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ уровня E_WARNING ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ дСскриптора.

Ѐункция posix_fpathconf() провСряСт Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ дСскрипторы, устанавливаСт last_error Π² EBADF ΠΈ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ уровня E_WARNING.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ интроспСкции ΠΊΠΎΠ΄Π° Reflection

Π’Ρ‹Π²ΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ReflectionClass::__toString() для пСрСчислСний ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс являСтся пСрСчислСниСм, Π° элСмСнты пСрСчислСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ элСмСнтами пСрСчислСния, Π° Π½Π΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ константами класса.

Π’Ρ‹Π²ΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ReflectionProperty::__toString() для свойств с Ρ…ΡƒΠΊΠ°ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρƒ ΠΊΠ°ΠΊΠΈΡ… Ρ…ΡƒΠΊΠΎΠ² Π΅ΡΡ‚ΡŒ свойство, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ эти Ρ…ΡƒΠΊΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ являСтся Π»ΠΈ свойство Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ влияСт Π½Π° Π²Ρ‹Π²ΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ReflectionClass::__toString(), ΠΊΠΎΠ³Π΄Π° класс содСрТит свойства с Ρ…ΡƒΠΊΠ°ΠΌΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sockets

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ socket_create()/socket_bind() ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сокСты сСмСйства AF_PACKET.

Ѐункция socket_getsockname() ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ индСкс интСрфСйса ΠΈ Π΅Π³ΠΎ строковоС прСдставлСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сокСта AF_PACKET.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Zlib

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ $use_include_path Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ gzfile(), gzopen() ΠΈ readgzfile() ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ с Ρ†Π΅Π»ΠΎΠ³ΠΎ числа (int) Π½Π° логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (bool).

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ gzfile(), gzopen() ΠΈ readgzfile() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ контСкст ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния Π² модулях

ΠœΠΎΠ΄ΡƒΠ»ΡŒ cURL

Ѐункция curl_setopt() со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ CURLOPT_FOLLOWLOCATION большС рассматриваСтся Π½Π΅ ΠΊΠ°ΠΊ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ CURLFOLLOW_OBEYCODE ΠΈ CURLFOLLOW_FIRSTONLY.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Fileinfo

ΠžΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Ρ„Π°ΠΉΠ» с вСрсии 5.45 Π΄ΠΎ 5.46.

Π’ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ finfo_close() Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π½Π° true вмСсто bool.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ошибок Intl Π±Ρ‹Π» ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ участок ΠΊΠΎΠ΄Π° Π²Ρ‹Π·Π²Π°Π» Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ext/date Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² IntlException.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Lexbor

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ всСгда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ lexbor. Он содСрТит Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ lexbor, которая Π±Ρ‹Π»Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚ ext/dom для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… модулях. Новый ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ доступно Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Opcache

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Opcache Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всСгда встроСн Π² Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» PHP ΠΈ всСгда загруТаСтся. INI-Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ opcache.enable ΠΈ opcache.enable_cli ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΠΎΠ±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ PCRE

ОбновлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pcre2lib с вСрсии 10.44 Π΄ΠΎ 10.46.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ PDO_Sqlite

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° минимальной вСрсии с 3.7.7 Π΄ΠΎ 3.7.17.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Readline

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ readline_add_history(), readline_clear_history() ΠΈ readline_callback_handler_install() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ true вмСсто ΠΎΠ±Ρ‰Π΅Π³ΠΎ bool.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ интроспСкции ΠΊΠΎΠ΄Π° Reflection

Π‘ класса ReflectionConstant сняли ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ final.

ИзмСнСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ INI-Ρ„Π°ΠΉΠ»Π°

Π―Π΄Ρ€ΠΎ PHP

Π’ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ fatal_error_backtraces. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт, трСбуСтся Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² свСдСния ΠΎ критичСских ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ трассировку.

Π’ INI-Ρ„Π°ΠΉΠ»Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ max_memory_limit. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° опрСдСляСт Π³Ρ€Π°Π½ΠΈΡ†Ρƒ, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈ установкС значСния memory_limit спровоцируСт ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ установит Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ memory_limit Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ max_memory_limit, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для max_memory_limit Π½Π΅ установили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ снимаСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послС запуска PHP, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ memory_limit доступно для измСнСния ΠΈ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΈ Π½Π° этапС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Opcache

Π”ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ opcache.file_cache_read_only. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ кСша Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ уровня, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° opcache.file_cache, Π² Ρ€Π΅ΠΆΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму смонтировали Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния. Для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства дисковых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ сниТСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ЦП ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ настройки: opcache.validate_timestamps=0, opcache.enable_file_override=1 ΠΈ opcache.file_cache_consistency_checks=0.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ кСш, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сгСнСрировала другая сборка PHP, ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ ΠΈΠ»ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ настройками, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½Π°Π±ΠΎΡ€ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ΠŸΡ€Π΅Π΄ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ opcache.jit_hot_loop Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π²Π½ΠΎ простому числу 61; простоС число с мСньшСй Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ окаТСтся ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ количСству ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°.

PHP Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сообщит ΠΎΠ± ошибкС, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ opcache.memory_consumption ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ памяти модуля OPcache; Ρ€Π°Π½ΡŒΡˆΠ΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ Π²Ρ‹Π΄Π°Π²Π°Π»ΠΎΡΡŒ, Π° Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ настройках PHP Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ OpenSSL

Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция openssl.libctx для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ° контСкста Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ OpenSSL. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ настраиваСмый libctx для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) libctx.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π―Π΄Ρ€ΠΎ PHP

Π£Π΄Π°Π»Π΅Π½Ρ‹ OP-ΠΊΠΎΠ΄Ρ‹ для сравнСния идСнтичности с логичСскими значСниями, Π² частности для шаблона match(true).

Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° спСциализация OPcode для сравнСний === [] ΠΈ !== [].

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ происходит Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

Части ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… использовался SSE2, Π±Ρ‹Π»ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для использования SIMD с ARM NEON.

Π’Π²Π΅Π΄Π΅Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина TAILCALL, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ компиляции с Clang>=19 Π½Π° x86_64 ΠΈΠ»ΠΈ aarch64. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина TAILCALL Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ быстро, ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина HYBRID, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ компиляции с GCC. Благодаря этому Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ PHP, скомпилированныС с Clang>=19, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ быстро, ΠΊΠ°ΠΊ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, скомпилированныС с GCC. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ CALL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ компиляторами, Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»Π°ΡΡŒ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ВнутрСнняя функция пСрСстала ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ лишниС ΠΊΠΎΠΏΠΈΠΈ строк ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ срСдством сопоставлСния.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ MBString

Части ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… использовался SSE2, Π±Ρ‹Π»ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ для использования SIMD с ARM NEON.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Opcache

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ извлСчСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… TLS Π² ΠΊΠΎΠ΄Π΅ JIT Π² сборках Π±Π΅Π· Glibc.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ интроспСкции ΠΊΠΎΠ΄Π° Reflection

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ SPL

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² SplFixedArray.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами с callback-функциями (array_find(), array_filter(), array_map(), usort(), ...).

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ urlencode() ΠΈ rawurlencode().

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ unpack() с бСзымянными повторСниями Π·Π° счёт ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ создания Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… строк ΠΈ ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pack().

ΠΠ΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ array_chunk().

ΠœΠΎΠ΄ΡƒΠ»ΡŒ XML

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ доступа ΠΊ свойству класса XMLReader.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ класса XMLWriter ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти.

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы