核心扩展库
数组
array_change_key_case
array_chunk
array_column
array_combine
array_count_values
array_diff_assoc
array_diff_key
array_diff_uassoc
array_diff_ukey
array_diff
array_fill_keys
array_fill
array_filter
array_flip
array_intersect_assoc
array_intersect_key
array_intersect_uassoc
array_intersect_ukey
array_intersect
array_is_list
array_key_exists
array_key_first
array_key_last
array_keys
array_map
array_merge_recursive
array_merge
array_multisort
array_pad
array_pop
array_product
array_push
array_rand
array_reduce
array_replace_recursive
array_replace
array_reverse
array_search
array_shift
array_slice
array_splice
array_sum
array_udiff_assoc
array_udiff_uassoc
array_udiff
array_uintersect_assoc
array_uintersect_uassoc
array_uintersect
array_unique
array_unshift
array_values
array_walk_recursive
array_walk
array
arsort
asort
compact
count
current
each
end
extract
in_array
key_exists
key
krsort
ksort
list
natcasesort
natsort
next
pos
prev
range
reset
rsort
shuffle
sizeof
sort
uasort
uksort
usort
类/对象
__autoload
class_alias
class_exists
enum_exists
get_called_class
get_class_methods
get_class_vars
get_class
get_declared_classes
get_declared_interfaces
get_declared_traits
get_mangled_object_vars
get_object_vars
get_parent_class
interface_exists
is_a
is_subclass_of
method_exists
property_exists
trait_exists
日期/时间
DateTime
DateTime::add
DateTime::__construct
DateTime::createFromFormat
DateTime::createFromImmutable
DateTime::createFromInterface
DateTime::getLastErrors
DateTime::modify
DateTime::__set_state
DateTime::setDate
DateTime::setISODate
DateTime::setTime
DateTime::setTimestamp
DateTime::setTimezone
DateTime::sub
DateTimeImmutable
DateTimeImmutable::add
DateTimeImmutable::__construct
DateTimeImmutable::createFromFormat
DateTimeImmutable::createFromInterface
DateTimeImmutable::createFromMutable
DateTimeImmutable::getLastErrors
DateTimeImmutable::modify
DateTimeImmutable::__set_state
DateTimeImmutable::setDate
DateTimeImmutable::setISODate
DateTimeImmutable::setTime
DateTimeImmutable::setTimestamp
DateTimeImmutable::setTimezone
DateTimeImmutable::sub
DateTimeInterface
DateTimeInterface::diff
DateTimeInterface::format
DateTimeInterface::getOffset
DateTimeInterface::getTimestamp
DateTimeInterface::getTimezone
DateTime::__wakeup
DateTimeZone
DateTimeZone::__construct
DateTimeZone::getLocation
DateTimeZone::getName
DateTimeZone::getOffset
DateTimeZone::getTransitions
DateTimeZone::listAbbreviations
DateTimeZone::listIdentifiers
DateInterval
DateInterval::__construct
DateInterval::createFromDateString
DateInterval::format
DatePeriod
DatePeriod::__construct
DatePeriod::createFromISO8601String
DatePeriod::getDateInterval
DatePeriod::getEndDate
DatePeriod::getRecurrences
DatePeriod::getStartDate
Date/Time 函数
checkdate
date_add
date_create_from_format
date_create_immutable_from_format
date_create_immutable
date_create
date_date_set
date_default_timezone_get
date_default_timezone_set
date_diff
date_format
date_get_last_errors
date_interval_create_from_date_string
date_interval_format
date_isodate_set
date_modify
date_offset_get
date_parse_from_format
date_parse
date_sub
date_sun_info
date_sunrise
date_sunset
date_time_set
date_timestamp_get
date_timestamp_set
date_timezone_get
date_timezone_set
date
getdate
gettimeofday
gmdate
gmmktime
gmstrftime
idate
localtime
microtime
mktime
strftime
strptime
strtotime
time
timezone_abbreviations_list
timezone_identifiers_list
timezone_location_get
timezone_name_from_abbr
timezone_name_get
timezone_offset_get
timezone_open
timezone_transitions_get
timezone_version_get
日期/时间 Error 和 Exception
Supported Date and Time Formats
所支持的时区列表
非洲
美洲
南极洲
北极
亚洲
大西洋
澳洲
欧洲
印度
太平洋地区
其他
DateError
DateObjectError
DateRangeError
DateException
DateInvalidOperationException
DateInvalidTimeZoneException
DateMalformedIntervalStringException
DateMalformedPeriodStringException
DateMalformedStringException
目录
Directory 类
Directory::close
Directory::read
Directory::rewind
chdir
chroot
closedir
dir
getcwd
opendir
readdir
rewinddir
scandir
错误处理
debug_backtrace
debug_print_backtrace
error_clear_last
error_get_last
error_log
error_reporting
restore_error_handler
restore_exception_handler
set_error_handler
set_exception_handler
trigger_error
user_error
程序执行
escapeshellarg
escapeshellcmd
exec
passthru
proc_close
proc_get_status
proc_nice
proc_open
proc_terminate
shell_exec
system
文件系统
basename
chgrp
chmod
chown
clearstatcache
copy
delete
dirname
disk_free_space
disk_total_space
diskfreespace
fclose
fdatasync
feof
fflush
fgetc
fgetcsv
fgets
fgetss
file_exists
file_get_contents
file_put_contents
file
fileatime
filectime
filegroup
fileinode
filemtime
fileowner
fileperms
filesize
filetype
flock
fnmatch
fopen
fpassthru
fputcsv
fputs
fread
fscanf
fseek
fstat
fsync
ftell
ftruncate
fwrite
glob
is_dir
is_executable
is_file
is_link
is_readable
is_uploaded_file
is_writable
is_writeable
lchgrp
lchown
link
linkinfo
lstat
mkdir
move_uploaded_file
parse_ini_file
parse_ini_string
pathinfo
pclose
popen
readfile
readlink
realpath_cache_get
realpath_cache_size
realpath
rename
rewind
rmdir
set_file_buffer
stat
symlink
tempnam
tmpfile
touch
umask
unlink
FastCGI 进程管理器
fastcgi_finish_request
fpm_get_status
函数处理
call_user_func_array
call_user_func
create_function
forward_static_call_array
forward_static_call
func_get_arg
func_get_args
func_num_args
function_exists
get_defined_functions
register_shutdown_function
register_tick_function
unregister_tick_function
Hash
HashContext 类
HashContext::__construct
HashContext::__serialize
HashContext::__unserialize
hash_algos
hash_copy
hash_equals
hash_file
hash_final
hash_hkdf
hash_hmac_algos
hash_hmac_file
hash_hmac
hash_init
hash_pbkdf2
hash_update_file
hash_update_stream
hash_update
hash
PHP 选项/信息
assert_options
assert
cli_get_process_title
cli_set_process_title
dl
extension_loaded
gc_collect_cycles
gc_disable
gc_enable
gc_enabled
gc_mem_caches
gc_status
get_cfg_var
get_current_user
get_defined_constants
get_extension_funcs
get_include_path
get_included_files
get_loaded_extensions
get_magic_quotes_gpc
get_magic_quotes_runtime
get_required_files
get_resources
getenv
getlastmod
getmygid
getmyinode
getmypid
getmyuid
getopt
getrusage
ini_alter
ini_get_all
ini_get
ini_parse_quantity
ini_restore
ini_set
memory_get_peak_usage
memory_get_usage
memory_reset_peak_usage
php_ini_loaded_file
php_ini_scanned_files
php_sapi_name
php_uname
phpcredits
phpinfo
phpversion
putenv
restore_include_path
set_include_path
set_time_limit
sys_get_temp_dir
version_compare
zend_thread_id
zend_version
JSON
JsonException
JsonSerializable
JsonSerializable::jsonSerialize
json_decode
json_encode
json_last_error_msg
json_last_error
json_validate
Mail
ezmlm_hash
mail
Math
abs
acos
acosh
asin
asinh
atan2
atan
atanh
base_convert
bindec
ceil
cos
cosh
decbin
dechex
decoct
deg2rad
exp
expm1
fdiv
floor
fmod
hexdec
hypot
intdiv
is_finite
is_infinite
is_nan
log10
log1p
log
max
min
octdec
pi
pow
rad2deg
round
sin
sinh
sqrt
tan
tanh
杂项
connection_aborted
connection_status
constant
define
defined
die
eval
exit
get_browser
__halt_compiler
highlight_file
highlight_string
hrtime
ignore_user_abort
pack
php_strip_whitespace
sapi_windows_cp_conv
sapi_windows_cp_get
sapi_windows_cp_is_utf8
sapi_windows_cp_set
sapi_windows_generate_ctrl_event
sapi_windows_set_ctrl_handler
sapi_windows_vt100_support
show_source
sleep
sys_getloadavg
time_nanosleep
time_sleep_until
uniqid
unpack
usleep
网络
checkdnsrr
closelog
dns_check_record
dns_get_mx
dns_get_record
fsockopen
gethostbyaddr
gethostbyname
gethostbynamel
gethostname
getmxrr
getprotobyname
getprotobynumber
getservbyname
getservbyport
header_register_callback
header_remove
header
headers_list
headers_sent
http_response_code
inet_ntop
inet_pton
ip2long
long2ip
net_get_interfaces
openlog
pfsockopen
setcookie
setrawcookie
socket_get_status
socket_set_blocking
socket_set_timeout
syslog
OPcache
opcache_compile_file
opcache_get_configuration
opcache_get_status
opcache_invalidate
opcache_is_script_cached
opcache_reset
输出控制
输出缓冲
冲刷系统缓冲区
用户级别输出缓冲区
缓冲什么输出?
嵌套输出缓冲区
缓冲区大小
缓冲区中允许的操作
输出处理程序
使用输出处理程序
传递给输出处理程序的 flag
输出处理程序的返回值
示例
flush
ob_clean
ob_end_clean
ob_end_flush
ob_flush
ob_get_clean
ob_get_contents
ob_get_flush
ob_get_length
ob_get_level
ob_get_status
ob_implicit_flush
ob_list_handlers
ob_start
output_add_rewrite_var
output_reset_rewrite_vars
密码散列算法
password_algos
password_get_info
password_hash
password_needs_rehash
password_verify
PCRE
PCRE模式
PCRE 正则语法
分隔符
元字符
转义序列(反斜线)
Unicode 字符属性
锚
句点
字符类(方括号)
可选路径(|)
内部选项设置
子组(子模式)
重复/量词
后向引用
断言
一次性子组
条件子组
注释
递归模式
性能
正则表达式模式中可用的模式修饰符
与 perl 的不同之处
preg_filter
preg_grep
preg_last_error_msg
preg_last_error
preg_match_all
preg_match
preg_quote
preg_replace_callback_array
preg_replace_callback
preg_replace
preg_split
Random
getrandmax
lcg_value
mt_getrandmax
mt_rand
mt_srand
rand
random_bytes
random_int
srand
Random\Randomizer
RandomRandomizer::__construct
RandomRandomizer::getBytes
RandomRandomizer::getBytesFromString
RandomRandomizer::getFloat
RandomRandomizer::getInt
RandomRandomizer::nextFloat
RandomRandomizer::nextInt
RandomRandomizer::pickArrayKeys
RandomRandomizer::__serialize
RandomRandomizer::shuffleArray
RandomRandomizer::shuffleBytes
RandomRandomizer::__unserialize
Random\Engine
Random\Engine::generate
Random\CryptoSafeEngine
Random\Engine\Secure
Random\Engine\Secure::generate
Random\Engine\Mt19937
Random\Engine\Mt19937::__construct
Random\Engine\Mt19937::__debugInfo
Random\Engine\Mt19937::generate
Random\Engine\Mt19937::__serialize
Random\Engine\Mt19937::__unserialize
Random\Engine\PcgOneseq128XslRr64
Random\Engine\PcgOneseq128XslRr64::__construct
Random\Engine\PcgOneseq128XslRr64::__debugInfo
Random\Engine\PcgOneseq128XslRr64::generate
Random\Engine\PcgOneseq128XslRr64::jump
Random\Engine\PcgOneseq128XslRr64::__serialize
Random\Engine\PcgOneseq128XslRr64::__unserialize
Random\Engine\Xoshiro256StarStar
Random\Engine\Xoshiro256StarStar::__construct
Random\Engine\Xoshiro256StarStar::__debugInfo
Random\Engine\Xoshiro256StarStar::generate
Random\Engine\Xoshiro256StarStar::jump
Random\Engine\Xoshiro256StarStar::jumpLong
Random\Engine\Xoshiro256StarStar::__serialize
Random\Engine\Xoshiro256StarStar::__unserialize
Random\RandomError
Random\BrokenRandomEngineError
Random\RandomException
反射
Reflection
Reflection::export
Reflection::getModifierNames
ReflectionClass
ReflectionClass::__construct
ReflectionClass::export
ReflectionClass::getAttributes
ReflectionClass::getConstant
ReflectionClass::getConstants
ReflectionClass::getConstructor
ReflectionClass::getDefaultProperties
ReflectionClass::getDocComment
ReflectionClass::getEndLine
ReflectionClass::getExtension
ReflectionClass::getExtensionName
ReflectionClass::getFileName
ReflectionClass::getInterfaceNames
ReflectionClass::getInterfaces
ReflectionClass::getMethod
ReflectionClass::getMethods
ReflectionClass::getModifiers
ReflectionClass::getName
ReflectionClass::getNamespaceName
ReflectionClass::getParentClass
ReflectionClass::getProperties
ReflectionClass::getProperty
ReflectionClass::getReflectionConstant
ReflectionClass::getReflectionConstants
ReflectionClass::getShortName
ReflectionClass::getStartLine
ReflectionClass::getStaticProperties
ReflectionClass::getStaticPropertyValue
ReflectionClass::getTraitAliases
ReflectionClass::getTraitNames
ReflectionClass::getTraits
ReflectionClass::hasConstant
ReflectionClass::hasMethod
ReflectionClass::hasProperty
ReflectionClass::implementsInterface
ReflectionClass::inNamespace
ReflectionClass::isAbstract
ReflectionClass::isAnonymous
ReflectionClass::isCloneable
ReflectionClass::isEnum
ReflectionClass::isFinal
ReflectionClass::isInstance
ReflectionClass::isInstantiable
ReflectionClass::isInterface
ReflectionClass::isInternal
ReflectionClass::isIterable
ReflectionClass::isIterateable
ReflectionClass::isReadOnly
ReflectionClass::isSubclassOf
ReflectionClass::isTrait
ReflectionClass::isUserDefined
ReflectionClass::newInstance
ReflectionClass::newInstanceArgs
ReflectionClass::newInstanceWithoutConstructor
ReflectionClass::setStaticPropertyValue
ReflectionClass::__toString
ReflectionClassConstant
ReflectionClassConstant::__construct
ReflectionClassConstant::export
ReflectionClassConstant::getAttributes
ReflectionClassConstant::getDeclaringClass
ReflectionClassConstant::getDocComment
ReflectionClassConstant::getModifiers
ReflectionClassConstant::getName
ReflectionClassConstant::getValue
ReflectionClassConstant::isEnumCase
ReflectionClassConstant::isFinal
ReflectionClassConstant::isPrivate
ReflectionClassConstant::isProtected
ReflectionClassConstant::isPublic
ReflectionClassConstant::__toString
ReflectionEnum
ReflectionEnum::__construct
ReflectionEnum::getBackingType
ReflectionEnum::getCase
ReflectionEnum::getCases
ReflectionEnum::hasCase
ReflectionEnum::isBacked
ReflectionEnumUnitCase
ReflectionEnumUnitCase::__construct
ReflectionEnumUnitCase::getEnum
ReflectionEnumUnitCase::getValue
ReflectionEnumBackedCase
ReflectionEnumBackedCase::__construct
ReflectionEnumBackedCase::getBackingValue
ReflectionZendExtension
ReflectionZendExtension::__clone
ReflectionZendExtension::__construct
ReflectionZendExtension::export
ReflectionZendExtension::getAuthor
ReflectionZendExtension::getCopyright
ReflectionZendExtension::getName
ReflectionZendExtension::getURL
ReflectionZendExtension::getVersion
ReflectionZendExtension::__toString
ReflectionExtension
ReflectionExtension::__clone
ReflectionExtension::__construct
ReflectionExtension::export
ReflectionExtension::getClasses
ReflectionExtension::getClassNames
ReflectionExtension::getConstants
ReflectionExtension::getDependencies
ReflectionExtension::getFunctions
ReflectionExtension::getINIEntries
ReflectionExtension::getName
ReflectionExtension::getVersion
ReflectionExtension::info
ReflectionExtension::isPersistent
ReflectionExtension::isTemporary
ReflectionExtension::__toString
ReflectionFunction
ReflectionFunction::__construct
ReflectionFunction::export
ReflectionFunction::getClosure
ReflectionFunction::invoke
ReflectionFunction::invokeArgs
ReflectionFunction::isAnonymous
ReflectionFunction::isDisabled
ReflectionFunction::__toString
ReflectionFunctionAbstract
ReflectionFunctionAbstract::__clone
ReflectionFunctionAbstract::getAttributes
ReflectionFunctionAbstract::getClosureScopeClass
ReflectionFunctionAbstract::getClosureThis
ReflectionFunctionAbstract::getClosureUsedVariables
ReflectionFunctionAbstract::getDocComment
ReflectionFunctionAbstract::getEndLine
ReflectionFunctionAbstract::getExtension
ReflectionFunctionAbstract::getExtensionName
ReflectionFunctionAbstract::getFileName
ReflectionFunctionAbstract::getName
ReflectionFunctionAbstract::getNamespaceName
ReflectionFunctionAbstract::getNumberOfParameters
ReflectionFunctionAbstract::getNumberOfRequiredParameters
ReflectionFunctionAbstract::getParameters
ReflectionFunctionAbstract::getReturnType
ReflectionFunctionAbstract::getShortName
ReflectionFunctionAbstract::getStartLine
ReflectionFunctionAbstract::getStaticVariables
ReflectionFunctionAbstract::getTentativeReturnType
ReflectionFunctionAbstract::hasReturnType
ReflectionFunctionAbstract::hasTentativeReturnType
ReflectionFunctionAbstract::inNamespace
ReflectionFunctionAbstract::isClosure
ReflectionFunctionAbstract::isDeprecated
ReflectionFunctionAbstract::isGenerator
ReflectionFunctionAbstract::isInternal
ReflectionFunctionAbstract::isStatic
ReflectionFunctionAbstract::isUserDefined
ReflectionFunctionAbstract::isVariadic
ReflectionFunctionAbstract::returnsReference
ReflectionFunctionAbstract::__toString
ReflectionMethod
ReflectionMethod::__construct
ReflectionMethod::createFromMethodName
ReflectionMethod::export
ReflectionMethod::getClosure
ReflectionMethod::getDeclaringClass
ReflectionMethod::getModifiers
ReflectionMethod::getPrototype
ReflectionMethod::hasPrototype
ReflectionMethod::invoke
ReflectionMethod::invokeArgs
ReflectionMethod::isAbstract
ReflectionMethod::isConstructor
ReflectionMethod::isDestructor
ReflectionMethod::isFinal
ReflectionMethod::isPrivate
ReflectionMethod::isProtected
ReflectionMethod::isPublic
ReflectionMethod::setAccessible
ReflectionMethod::__toString
ReflectionNamedType
ReflectionNamedType::getName
ReflectionNamedType::isBuiltin
ReflectionObject
ReflectionObject::__construct
ReflectionObject::export
ReflectionParameter
ReflectionParameter::allowsNull
ReflectionParameter::canBePassedByValue
ReflectionParameter::__clone
ReflectionParameter::__construct
ReflectionParameter::export
ReflectionParameter::getAttributes
ReflectionParameter::getClass
ReflectionParameter::getDeclaringClass
ReflectionParameter::getDeclaringFunction
ReflectionParameter::getDefaultValue
ReflectionParameter::getDefaultValueConstantName
ReflectionParameter::getName
ReflectionParameter::getPosition
ReflectionParameter::getType
ReflectionParameter::hasType
ReflectionParameter::isArray
ReflectionParameter::isCallable
ReflectionParameter::isDefaultValueAvailable
ReflectionParameter::isDefaultValueConstant
ReflectionParameter::isOptional
ReflectionParameter::isPassedByReference
ReflectionParameter::isVariadic
ReflectionParameter::__toString
ReflectionProperty
ReflectionProperty::__clone
ReflectionProperty::__construct
ReflectionProperty::export
ReflectionProperty::getAttributes
ReflectionProperty::getDeclaringClass
ReflectionProperty::getDefaultValue
ReflectionProperty::getDocComment
ReflectionProperty::getModifiers
ReflectionProperty::getName
ReflectionProperty::getType
ReflectionProperty::getValue
ReflectionProperty::hasDefaultValue
ReflectionProperty::hasType
ReflectionProperty::isDefault
ReflectionProperty::isInitialized
ReflectionProperty::isPrivate
ReflectionProperty::isPromoted
ReflectionProperty::isProtected
ReflectionProperty::isPublic
ReflectionProperty::isReadOnly
ReflectionProperty::isStatic
ReflectionProperty::setAccessible
ReflectionProperty::setValue
ReflectionProperty::__toString
ReflectionType
ReflectionType::allowsNull
ReflectionType::__toString
ReflectionUnionType
ReflectionUnionType::getTypes
ReflectionGenerator
ReflectionGenerator::__construct
ReflectionGenerator::getExecutingFile
ReflectionGenerator::getExecutingGenerator
ReflectionGenerator::getExecutingLine
ReflectionGenerator::getFunction
ReflectionGenerator::getThis
ReflectionGenerator::getTrace
ReflectionFiber
ReflectionFiber::__construct
ReflectionFiber::getCallable
ReflectionFiber::getExecutingFile
ReflectionFiber::getExecutingLine
ReflectionFiber::getFiber
ReflectionFiber::getTrace
ReflectionIntersectionType
ReflectionIntersectionType::getTypes
ReflectionReference
ReflectionReference::__construct
ReflectionReference::fromArrayElement
ReflectionReference::getId
ReflectionAttribute
ReflectionAttribute::__construct
ReflectionAttribute::getArguments
ReflectionAttribute::getName
ReflectionAttribute::getTarget
ReflectionAttribute::isRepeated
ReflectionAttribute::newInstance
Reflector
Reflector::export
ReflectionException
SPL
数据结构
SplDoublyLinkedList
SplStack
SplQueue
SplHeap
SplMaxHeap
SplMinHeap
SplPriorityQueue
SplFixedArray
SplObjectStorage
迭代器
AppendIterator
ArrayIterator
CachingIterator
CallbackFilterIterator
DirectoryIterator
EmptyIterator
FilesystemIterator
FilterIterator
GlobIterator
InfiniteIterator
IteratorIterator
LimitIterator
MultipleIterator
NoRewindIterator
ParentIterator
RecursiveArrayIterator
RecursiveCachingIterator
RecursiveCallbackFilterIterator
RecursiveDirectoryIterator
RecursiveFilterIterator
RecursiveIteratorIterator
RecursiveRegexIterator
RecursiveTreeIterator
RegexIterator
接口
Countable
OuterIterator
RecursiveIterator
SeekableIterator
异常
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
LogicException
OutOfBoundsException
OutOfRangeException
OverflowException
RangeException
RuntimeException
UnderflowException
UnexpectedValueException
SPL 函数
class_implements
class_parents
class_uses
iterator_apply
iterator_count
iterator_to_array
spl_autoload_call
spl_autoload_extensions
spl_autoload_functions
spl_autoload_register
spl_autoload_unregister
spl_autoload
spl_classes
spl_object_hash
spl_object_id
文件处理
SplFileInfo
SplFileObject
SplTempFileObject
各种类及接口
ArrayObject
SplObserver
SplSubject
Stream
php_user_filter
php_user_filter::filter
php_user_filter::onClose
php_user_filter::onCreate
streamWrapper
streamWrapper::__construct
streamWrapper::__destruct
streamWrapper::dir_closedir
streamWrapper::dir_opendir
streamWrapper::dir_readdir
streamWrapper::dir_rewinddir
streamWrapper::mkdir
streamWrapper::rename
streamWrapper::rmdir
streamWrapper::stream_cast
streamWrapper::stream_close
streamWrapper::stream_eof
streamWrapper::stream_flush
streamWrapper::stream_lock
streamWrapper::stream_metadata
streamWrapper::stream_open
streamWrapper::stream_read
streamWrapper::stream_seek
streamWrapper::stream_set_option
streamWrapper::stream_stat
streamWrapper::stream_tell
streamWrapper::stream_truncate
streamWrapper::stream_write
streamWrapper::unlink
streamWrapper::url_stat
stream_bucket_append
stream_bucket_make_writeable
stream_bucket_new
stream_bucket_prepend
stream_context_create
stream_context_get_default
stream_context_get_options
stream_context_get_params
stream_context_set_default
stream_context_set_option
stream_context_set_options
stream_context_set_params
stream_copy_to_stream
stream_filter_append
stream_filter_prepend
stream_filter_register
stream_filter_remove
stream_get_contents
stream_get_filters
stream_get_line
stream_get_meta_data
stream_get_transports
stream_get_wrappers
stream_is_local
stream_isatty
stream_notification_callback
stream_register_wrapper
stream_resolve_include_path
stream_select
stream_set_blocking
stream_set_chunk_size
stream_set_read_buffer
stream_set_timeout
stream_set_write_buffer
stream_socket_accept
stream_socket_client
stream_socket_enable_crypto
stream_socket_get_name
stream_socket_pair
stream_socket_recvfrom
stream_socket_sendto
stream_socket_server
stream_socket_shutdown
stream_supports_lock
stream_wrapper_register
stream_wrapper_restore
stream_wrapper_unregister
字符串
addcslashes
addslashes
bin2hex
chop
chr
chunk_split
convert_cyr_string
convert_uudecode
convert_uuencode
count_chars
crc32
crypt
echo
explode
fprintf
get_html_translation_table
hebrev
hebrevc
hex2bin
html_entity_decode
htmlentities
htmlspecialchars_decode
htmlspecialchars
implode
join
lcfirst
levenshtein
localeconv
ltrim
md5_file
md5
metaphone
money_format
nl_langinfo
nl2br
number_format
ord
parse_str
print
printf
quoted_printable_decode
quoted_printable_encode
quotemeta
rtrim
setlocale
sha1_file
sha1
similar_text
soundex
sprintf
sscanf
str_contains
str_decrement
str_ends_with
str_getcsv
str_increment
str_ireplace
str_pad
str_repeat
str_replace
str_rot13
str_shuffle
str_split
str_starts_with
str_word_count
strcasecmp
strchr
strcmp
strcoll
strcspn
strip_tags
stripcslashes
stripos
stripslashes
stristr
strlen
strnatcasecmp
strnatcmp
strncasecmp
strncmp
strpbrk
strpos
strrchr
strrev
strripos
strrpos
strspn
strstr
strtok
strtolower
strtoupper
strtr
substr_compare
substr_count
substr_replace
substr
trim
ucfirst
ucwords
utf8_decode
utf8_encode
vfprintf
vprintf
vsprintf
wordwrap
URL
base64_decode
base64_encode
get_headers
get_meta_tags
http_build_query
parse_url
rawurldecode
rawurlencode
urldecode
urlencode
变量处理
boolval
debug_zval_dump
doubleval
empty
floatval
get_debug_type
get_defined_vars
get_resource_id
get_resource_type
gettype
intval
is_array
is_bool
is_callable
is_countable
is_double
is_float
is_int
is_integer
is_iterable
is_long
is_null
is_numeric
is_object
is_real
is_resource
is_scalar
is_string
isset
print_r
serialize
settype
strval
unserialize
unset
var_dump
var_export
绑定的扩展库
Apache
BC Math
Calendar
COM
Ctype
DBA
Exif
FFI
Fileinfo
过滤器
FTP
HRTime
iconv
GD
intl
多字节字符串
Mhash
PCNTL
PDO
Phar
phpdbg
POSIX
Semaphore
Sessions
Shared Memory
Socket
SQLite3
Tokenizer
Zlib
外部扩展库
Bzip2
cURL
DOM
Enchant
Gettext
GMP
IMAP
LDAP
libxml
MySQLi
Mysqlnd
OCI8
OpenSSL
MS SQL Server (PDO)
Firebird (PDO)
MySQL (PDO)
Oracle (PDO)
ODBC and DB2 (PDO)
PostgreSQL (PDO)
SQLite (PDO)
PostgreSQL
Pspell
Readline
SimpleXML
SNMP
SOAP
Sodium
Tidy
ODBC
XML 解析器
XMLReader
XMLWriter
XSL
Zip
PECL 扩展库
APCu
CommonMark
Componere
CUBRID
dBase
直接 IO
Data Structures
Eio
Ev
Event
Expect
FANN
FDF
Gearman
Gender
GeoIP
Gmagick
GnuPG
Firebird/InterBase
IBM DB2
Igbinary
ImageMagick
Inotify
Lua
LuaSandbox
LZF
Mailparse
Mcrypt
Memcache
Memcached
mqseries
Mysql(原始)
Mysql_xdevapi
OAuth
OpenAL
parallel
Parle
CUBRID (PDO)
IBM (PDO)
Informix (PDO)
MS SQL Server (PDO)
PS
pthreads
Quickhash
Radius
Rar
Recode
Rnp
RpmInfo
RRD
runkit7
ScoutAPM
SeasLog
Simdjson
Solr
SQLSRV
ssdeep
SSH2
Statistics
Stomp
SVM
SVN
Swoole
Sync
Taint
TCP
Trader
UI
uopz
V8js
var_representation
Varnish
WDDX
win32service
WinCache
wkhtmltox
xattr
xdiff
Xhprof
XLSWriter
XMLDiff
XML-RPC
Yac
Yaconf
Yaf
Yaml
Yar
YAZ
0MQ 消息
ZooKeeper
OPcache - PHP函数参考手册 - 笔下光年
网站首页
OPcache
## 简介 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。 PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2,5.3 和 5.4 版本可以使用 [» PECL](https://pecl.php.net/package/ZendOpcache "» PECL") 扩展中的 OPcache 库。 ## 安装/配置 ### 需求 构建此扩展不需要其他扩展。 ### 安装 OPcache 只能编译为共享扩展。 如果你使用 --disable-all 参数 禁用了默认扩展的构建, 那么必须使用 --enable-opcache 选项来开启 OPcache。 编译之后,就可以使用 [zend_extension](https://www.php.net/manual/zh/ini.core.php#ini.zend-extension "zend_extension") 指令来将 OPcache 扩展加载到 PHP 中。在非 Windows 平台使用 zend_extension=/full/path/to/opcache.so, Windows 平台使用 zend_extension=C:\path\to\php_opcache.dll。 > 注意: 如果想将 [» Xdebug](http://xdebug.org/ "» Xdebug") 与 OPcache 一起使用,必须在 Xdebug 之前加载 OPcache。 #### 推荐的 php.ini 设置 使用下列推荐设置来获得较好的 性能: opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1 ; prior to PHP 7.2.0 你也可以禁用 opcache.save_comments 并且启用 opcache.enable_file_override。 需要提醒的是,在生产环境中使用上述配置之前,必须经过严格测试。 因为上述配置存在一个已知问题,它会引发一些框架和应用的异常, 尤其是在存在文档使用了备注注解的时候。 在 Windows 上,应该启用 opcache.file_cache_fallback,以及应该将 opcache.file_cache 设置为存在且可写的目录。 这里是 OPcache 可用的配置指令完整列表。 ### 运行时配置 这些函数的行为受 `php.ini` 中的设置影响。 **OPcache 配置选项** | 名字 | 默认 | 可修改范围 | 更新日志 | |---------------------------------------|--------------|------------|----------------------------------------| | opcache.enable | "1" | INI_ALL | | | opcache.enable_cli | "0" | INI_SYSTEM | 在 PHP 7.1.2 至 7.1.6(含)的版本,默认值是“1” | | opcache.memory_consumption | "128" | INI_SYSTEM | | | opcache.interned_strings_buffer | "8" | INI_SYSTEM | | | opcache.max_accelerated_files | "10000" | INI_SYSTEM | | | opcache.max_wasted_percentage | "5" | INI_SYSTEM | | | opcache.use_cwd | "1" | INI_SYSTEM | | | opcache.validate_timestamps | "1" | INI_ALL | | | opcache.revalidate_freq | "2" | INI_ALL | | | opcache.revalidate_path | "0" | INI_ALL | | | opcache.save_comments | "1" | INI_SYSTEM | | | opcache.fast_shutdown | "0" | INI_SYSTEM | 从 PHP 7.2.0 开始被移除 | | opcache.enable_file_override | "0" | INI_SYSTEM | | | opcache.optimization_level | "0x7FFEBFFF" | INI_SYSTEM | 从 PHP 7.3.0 起修改为 0x7FFFBFFF | | opcache.inherited_hack | "1" | INI_SYSTEM | 自 PHP 7.3.0 被移除 | | opcache.dups_fix | "0" | INI_ALL | | | opcache.blacklist_filename | "" | INI_SYSTEM | | | opcache.max_file_size | "0" | INI_SYSTEM | | | opcache.consistency_checks | "0" | INI_ALL | 自 8.1.18 和 8.2.5 起禁用。从 PHP 8.3.0 起已删除。 | | opcache.force_restart_timeout | "180" | INI_SYSTEM | | | opcache.error_log | "" | INI_SYSTEM | | | opcache.log_verbosity_level | "1" | INI_SYSTEM | | | opcache.record_warnings | "0" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.preferred_memory_model | "" | INI_SYSTEM | | | opcache.protect_memory | "0" | INI_SYSTEM | | | opcache.mmap_base | null | INI_SYSTEM | | | opcache.restrict_api | "" | INI_SYSTEM | | | opcache.file_update_protection | "2" | INI_ALL | | | opcache.huge_code_pages | "0" | INI_SYSTEM | | | opcache.lockfile_path | "/tmp" | INI_SYSTEM | | | opcache.opt_debug_level | "0" | INI_SYSTEM | 自 PHP 7.1.0 起有效 | | opcache.file_cache | NULL | INI_SYSTEM | | | opcache.file_cache_only | "0" | INI_SYSTEM | | | opcache.file_cache_consistency_checks | "1" | INI_SYSTEM | | | opcache.file_cache_fallback | "1" | INI_SYSTEM | 仅适用于 Windows 平台 | | opcache.validate_permission | "0" | INI_SYSTEM | 从 PHP 7.0.14 开始支持 | | opcache.validate_root | "0" | INI_SYSTEM | 从 PHP 7.0.14 开始支持 | | opcache.preload | "" | INI_SYSTEM | 从 PHP 7.4.0 开始支持 | | opcache.preload_user | "" | INI_SYSTEM | 从 PHP 7.4.0 开始支持 | | opcache.cache_id | "" | INI_SYSTEM | 仅支持 Windows。自 PHP 7.4.0 起有效 | | opcache.jit | "tracing" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_buffer_size | "0" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_debug | "0" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_bisect_limit | "0" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_prof_threshold | "0.005" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_max_root_traces | "1024" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_max_side_traces | "128" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_max_exit_counters | "8192" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_hot_loop | "64" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_hot_func | "127" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_hot_return | "8" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_hot_side_exit | "8" | INI_SYSTEM | 自 PHP 8.0.0 起有效 | | opcache.jit_blacklist_root_trace | "16" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_blacklist_side_trace | "8" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_max_loop_unrolls | "8" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_max_recursive_calls | "2" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_max_recursive_returns | "2" | INI_ALL | 自 PHP 8.0.0 起有效 | | opcache.jit_max_polymorphic_calls | "2" | INI_ALL | 自 PHP 8.0.0 起有效 | 有关 INI_* 样式的更多详情与定义,见 [配置可被设定范围](https://www.php.net/manual/zh/configuration.changes.modes.php "配置可被设定范围")。 这是配置指令的简短说明。 `opcache.enable` `bool` 启用操作码缓存。如果禁用此选项,则不会优化和缓存代码。 在运行期使用 ini_set() 函数只能禁用 opcache.enable 设置,不可以启用此设置。 如果在脚本中尝试启用此设置项会产生警告。 opcache.enable_cli bool 仅针对 CLI 版本的 PHP 启用操作码缓存。 通常被用来测试和调试。 opcache.memory_consumption int OPcache 的共享内存大小,以兆字节为单位。最小允许值为 "8"。如果设置的值小于最小值,则强制设置为允许的最小值。 opcache.interned_strings_buffer int 用来存储预留字符串的内存大小,以兆字节为单位。 opcache.max_accelerated_files int OPcache 哈希表中可存储的脚本文件数量上限。真实的取值是在质数集合{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 } 中找到的第一个大于等于设置值的质数。设置值取值范围最小值是 200,最大值是 1000000。超出范围的值将限制为允许的值。 opcache.max_wasted_percentage int 如果可用内存不足,在计划重新启动之前,允许浪费的最大内存百分比。最大允许值是 "50",如果设置了更大的值,则强制设置为允许的最大值。 opcache.use_cwd bool 如果启用,OPcache 将在哈希表的脚本键之后附加改脚本的工作目录, 以避免同名脚本冲突的问题。 禁用此选项可以提高性能,但是可能会导致应用崩溃。 opcache.validate_timestamps bool 如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。 > 注意: 如果将 opcache.file_update_protection 或 opcache.max_file_size 选项设置为非零值,OPcache 仍可能在编译时验证文件的时间戳。 opcache.revalidate_freq int 检查脚本时间戳是否有更新的周期,以秒为单位。 设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新。 如果 opcache.validate_timestamps 配置指令设置为禁用,那么此设置项将会被忽略。 opcache.revalidate_path bool 如果禁用此选项,在同一个 include_path 已存在的缓存文件会被重用。 因此,将无法找到不在包含路径下的同名文件。 opcache.save_comments bool 如果禁用,脚本文件中的注释内容将不会被包含到操作码缓存文件, 这样可以有效减小优化后的文件体积。 禁用此配置指令可能会导致一些依赖注释或注解的 应用或框架无法正常工作, 比如: Doctrine, Zend Framework 2 以及 PHPUnit。 opcache.fast_shutdown bool 如果启用,则会使用快速停止续发事件。 所谓快速停止续发事件是指依赖 Zend 引擎的内存管理模块 一次释放全部请求变量的内存,而不是依次释放每一个已分配的内存块。 从 PHP 7.2.0 开始,此配置指令被移除。 快速停止的续发事件的处理已经集成到 PHP 中, 只要有可能,PHP 会自动处理这些续发事件。 opcache.enable_file_override bool 如果启用,则在调用函数 file_exists(), is_file() 以及 is_readable() 的时候, 都会检查操作码缓存,无论文件是否已经被缓存。 如果应用中包含检查 PHP 脚本存在性和可读性的功能,这样可以提升性能。 但是如果禁用了 opcache.validate_timestamps 选项, 可能存在返回过时数据的风险。 opcache.optimization_level int 控制执行哪些优化的二进制位掩码。默认是应用所有安全优化。更改默认值对于调试/开发优化器非常有用(参见 opcache.opt_debug_level)。 opcache.inherited_hack bool 该配置指令已被忽略。 opcache.dups_fix bool 仅作为针对 “不可重定义类”错误的一种解决方案。 opcache.blacklist_filename string OPcache 黑名单文件位置。 黑名单文件为文本文件,包含了不进行预编译优化的文件名,每行一个文件名。 黑名单中的文件名可以使用通配符,也可以使用前缀。 此文件中以分号(;)开头的行将被视为注释。 简单的黑名单文件可能如下所示: ``` ; 将特定文件加入到黑名单 /var/www/broken.php ; 以字符 x 文件打头的文件 /var/www/x ; 通配符匹配 /var/www/*-broken.php ``` opcache.max_file_size int 以字节为单位的缓存的文件大小上限。设置为 0 表示缓存全部文件。 opcache.consistency_checks int 如果是非 0 值,OPcache 将会每隔 N 次请求检查缓存校验和。 N 即为此配置指令的设置值。 由于此选项对于性能有较大影响,请尽在调试环境使用。 > 注意: 自 8.1.18 和 8.2.5 起禁用。从 PHP 8.3.0 起已删除。 opcache.force_restart_timeout int 如果缓存处于非激活状态,等待多少秒之后计划重启。 如果超出了设定时间,则 OPcache 模块将杀除持有缓存锁的进程, 并进行重启。 如果选项 opcache.log_verbosity_level 设置为 2 或者 2 以上的数值,当发生重启时将在日志中记录一条警告信息。 Windows 不支持该指令。 opcache.error_log string OPcache 模块的错误日志文件。 如果留空,则视为 stderr, 错误日志将被送往标准错误输出 (通常情况下是 Web 服务器的错误日志文件)。 opcache.log_verbosity_level int OPcache 模块的日志级别。 默认情况下,仅有致命级别(0)及错误级别(1)的日志会被记录。 其他可用的级别有:警告(2),信息(3)和调试(4)。 opcache.record_warnings bool 如果启用,OPcache 将记录编译时警告并在下次对其重播,即使是从缓存中提供的。 opcache.preferred_memory_model string OPcache 首选的内存模块。 如果留空,OPcache 会选择适用的模块, 通常情况下,自动选择就可以满足需求。 可选值包括: mmap,shm, posix 以及 win32。 opcache.protect_memory bool 保护共享内存,以避免执行脚本时发生非预期的写入。 仅用于内部调试。 opcache.mmap_base string 在 Windows 平台上共享内存段的基地址。 所有的 PHP 进程都将共享内存映射到同样的地址空间。 使用此配置指令避免“无法重新附加到基地址”的错误。 opcache.restrict_api string 仅允许路径是以指定字符串开始的 PHP 脚本调用 OPcache API 函数。 默认值为空字符串 "",表示不做限制。 opcache.file_update_protection string 如果文件的最后修改时间距现在不足此项配置指令所设定的秒数,那么这个文件不会进入到缓存中。 这是为了防止尚未完全修改完毕的文件进入到缓存。如果所有文件更新都是原子的,则可以通过将其设置为 0 来提高性能。这将允许文件立即缓存。 opcache.huge_code_pages bool 启用或者禁用将 PHP 代码(文本段)拷贝到 HUGE PAGES 中。这应该会提高性能,但是需要适当的 OS 配置。自 PHP 7.0.0 起可在 Linux 上使用,自 PHP 7.4.0 上可在 FreeBSD 上使用。 opcache.lockfile_path string 用来存储共享锁文件的绝对路径(仅适用于 *nix 操作系统)。 opcache.opt_debug_level string 出于对不同阶段的优化情况进行调试的目的,生成操作码转储。 设置为 0x10000 会在进行优化之前输出编译器编译后的操作码, 设置为 0x20000 会输出优化后的操作码。 opcache.file_cache string 配置二级缓存目录并启用二级缓存。 启用二级缓存可以在 SHM 内存满了、服务器重启或者重置 SHM 的时候提高性能。 默认值为空字符串 "",表示禁用基于文件的缓存。 opcache.file_cache_only bool 启用或禁用在共享内存中的 opcode 缓存。 > 注意: 在 PHP 8.1.0 之前,已经存在文件缓存时禁用此指令需要手动清除文件缓存。 opcache.file_cache_consistency_checks bool 当从文件缓存中加载脚本的时候,是否对文件的校验和进行验证。 opcache.file_cache_fallback bool 在 Windows 平台上,当一个进程无法附加到共享内存的时候, 使用基于文件的缓存,也即:opcache.file_cache_only=1。 需要显示的启用文件缓存。 > **警告** 不鼓励禁用此配置项, 禁用它可能会导致进程无法启动。 opcache.validate_permission bool 针对当前用户,验证缓存文件的访问权限。 opcache.validate_root bool 在 chroot 的环境中避免命名冲突。 为了防止进程访问到 chroot 环境之外的文件,应该在 chroot 的情况下启用这个选项。 opcache.preload string 指定要在服务器启动时期进行编译和缓存的 PHP 脚本文件, 这些文件也可能通过 include 或者 opcache_compile_file() 函数 来预加载其他文件。 所有这些文件中包含的实体,包括函数、类等,在服务器启动的时候就被加载和缓存, 对于用户代码来讲是“开箱可用”的。 > 注意: Windows 不支持预加载。 opcache.preload_user string 预加载以指定系统用户身份运行。这对于切换到非特权系统用户之前以 root 身份启动的服务器很有用。考虑到安全因素,默认禁止以 root 身份预加载代码,除非该指令明确设置为 root。 opcache.cache_id string 在 Windwos 上,运行在相同 PHP SAPI 且相同的用户账户使用相同缓存 ID 上的所有进程,会共享单个 OPcache 实例。缓存 ID 的值可以自由选择。 > **小技巧** 对于 IIS,使用环境变量 APP_POOL_ID 作为 opcache.cache_id,可以让不同的应用池拥有自己的 OPcache 实例。 opcache.jit string|int 针对经典用法,此选项接受以下四个字符串值之一: - disable:完全禁用,无法在运行时启用。 - off:禁用,但可以在运行时启用。 - tracing/on:使用追踪 JIT。默认启用并推荐给大部分用户。 - function:使用函数 JIT。 针对高级用法,此选项接受 4 位整数 CRTO,其中的位分别是: C(特定 CPU 优化 flag) - 0:禁用特定 CPU 优化。 - 1:如果 CPU 支持则启用 AVX。 R(寄存器分配) - 0:不执行寄存器分配。 - 1:执行局部域寄存器分配。 - 2:执行全局寄存器分配。 T(触发) - 0: 在脚本加载时编译所有函数。 - 1: 在第一次执行时编译函数。 - 2:第一次请求时分析函数,然后编译最热门函数。 - 3:动态分析和编译热门函数。 - 4:目前未使用。 - 5:使用追踪 JIT。动态分析和为热门代码段编译追踪。 O(优化级别) - 0:不 JIT。 - 1:最小 JIT(调用标准 VM 处理程序)。 - 2:内联 VM 处理程序。 - 3:使用类型推断。 - 4:使用调用图。 - 5:优化整个脚本。 "tracing" 模式对应 CRTO = 1254,"function" 模式对应 CRTO = 1205。 opcache.jit_buffer_size int 为编译 JIT 代码保留的共享内存量。值 0 表示禁用 JIT。 当使用 int 时, 其值以字节来衡量。还可以使用在 FAQ 中描述的速记符。 opcache.jit_debug int 指定位掩码,用于启动哪个 JIT 调试输出。参阅 » zend_jit.h (搜索以 ZEND_JIT_DEBUG 开头的宏定义)。 opcache.jit_bisect_limit int 调试选项,在编译一定数量的函数之后禁用 JIT 编译。这对于定位 JIT 错误编译的源代码可能很有帮助。注意:此选项仅在 JIT 触发设置为 0(在脚本加载时编译)或1(第一次执行时编译)时起作用,例如 opcache.jit=1215。更多详细信息请参阅 opcache.jit 选项。 opcache.jit_prof_threshold float 当使用“首次请求时分析”触发模式时,此阈值确定是否视函数为热点。对该函数的调用次数除以所有函数的调用次数必须高于该阈值。例如,阈值为 0.005 表示占所有调用次数超过 0.5% 的函数将被进行 JIT 编译。 opcache.jit_max_root_traces int Maximum number of root traces. The root trace is an execution flow taking one path through the code firstly, which is a unit of JIT compilation. JIT will not compile new code if it reaches this limit. opcache.jit_max_side_traces int Maximum number of side traces a root trace may have. The side trace is another execution flow that does not follow the path of compiled root trace. Side traces belonging to the same root trace will not be compiled if it reaches this limit. opcache.jit_max_exit_counters int Maximum number of side trace exit counters. This limits the total number of side traces there may be, across all root traces. opcache.jit_hot_loop int After how many iterations a loop is considered hot. Valid value range is [0,255]; for any setting out of this range, e.g., -1 or 256, default value will be used instead. Specially, a zero value will disable JIT to trace and compile any loops. opcache.jit_hot_func int After how many calls a function is considered hot. Valid value range is [0,255]; for any setting out of this range, e.g., -1 or 256, default value will be used instead. Specially, a zero value will disable JIT to trace and compile any functions. opcache.jit_hot_return int After how many returns a return is considered hot. Valid value range is [0,255]; for any setting out of this range, e.g., -1 or 256, default value will be used instead. Specially, a zero value will disable JIT to trace and compile any returns. opcache.jit_hot_side_exit int After how many exits a side exit is considered hot. Valid value range is [0,255]; for any setting out of this range, e.g., -1 or 256, default value will be used instead. Specially, a zero value will disable JIT to trace and compile any side exits. opcache.jit_blacklist_root_trace int 在将 root trace 列入黑名单之前,尝试编译 side trace 的最大次数。 opcache.jit_blacklist_side_trace int 在将 side trace 列入黑名单之前,尝试编译 side trace 的最大次数。 opcache.jit_max_loop_unrolls int 在 side trace 中展开循环的最大尝试次数,试图到达 root trace 并关闭外循环。 opcache.jit_max_recursive_calls int 递归调用循环的最大展开次数。 opcache.jit_max_recursive_returns int 递归返回循环的最大展开次数。 opcache.jit_max_polymorphic_calls int 内联 polymorphic(动态或方法)调用的最大尝试次数。超过此限制的调用被视为 megamorphic,不会进行内联处理。 ## 资源类型 此扩展没有定义资源类型。 ## 预加载 从 PHP 7.4.0 起,PHP 可以被配置为在引擎启动时将一些脚本预加载进 opcache 中。在那些文件中的任何函数、类、 接口或者 trait (但不包括常量)将在接下来的所有请求中变为全局可用,不再需要显示地包含它们。这牺牲了基准的 内存占用率但换来了方便和性能(因为这些代码将始终可用)。它还需要通过重启 PHP 进程来清除预加载的脚本, 这意味着这个功能仅在生产环境中有实用价值,而非开发环境。 需要注意的是,性能和内存之间的最佳平衡因应用而异。 “预加载一切” 可能是最简单的策略,但不一定是最好的策略。 此外,只有当不同的请求间有持久化的进程时,预加载才有用。这意味着,虽然在启用了 opcache 的命令行脚本中可以使用预加载, 但这通常是没有意义的。例外情况是在使用预加载时的 FFI 库。 > 注意: Windows 上不支持预加载。 配置预加载需要两步,并且要求开启 opcache。首先,在 `php.ini `中设置 opcache.preload 的值: opcache.preload=preload.php preload.php 是一个在服务器启动时会运行一次(PHP-FPM、mod_php 等)的任意文件, 它的代码会加载到持久化内存中。在以 root 用户启动后切换到非特权系统用户的服务器上,又或者是以 root 用户身份运行 PHP 的情况(不建议这样做),可以通过opcache.preload_user 来指定进行预加载的系统用户。 默认情况下,不允许以 root 用户身份进行预加载。通过设置 opcache.preload_user=root 来显示地允许它。 在 `preload.php` 脚本中, 任何被 include、 include_once、require、require_once或 opcache_compile_file() 引用的文件将被解析到持久化内存中。 在下面的这个例子中, 所有在 src 目录下的 .php 文件将被预加载,除非那是一个 Test 文件。 ```php <?php $directory = new RecursiveDirectoryIterator(__DIR__ . '/src'); $fullTree = new RecursiveIteratorIterator($directory); $phpFiles = new RegexIterator($fullTree, '/.+((?<!Test)+\.php$)/i', RecursiveRegexIterator::GET_MATCH); foreach ($phpFiles as $key => $file) { require_once $file[0]; } ?> ``` include 和 opcache_compile_file() 都会生效,但对代码处理方式有不同的影响。 Both include and opcache_compile_file() will work, but have different implications for how code gets handled. - include 将执行文件中的代码,而 opcache_compile_file() 不会执行代码。这意味着只有前者支持条件声明(在 if 块中声明函数)。 - 由于 include 会执行代码,因此所有被 include 的文件也将被解析, 其中的定义也将被预加载。 - opcache_compile_file() 可以按任何顺序加载文件。也就是说,如果 a.php 定义了类 A,而 b.php 定义了一个继承类 A 的类 B, 则 opcache_compile_file() 可以按任何顺序来加载这两个文件。然而,当使用 include 时, a.php 必须 先被包含。 - 不管在哪种情况下,如果一个脚本包含了一个已经被预加载的文件,那么这个已经被预加载的文件里的内容仍将被执行, 但其中定义的任何符号将不会被重新定义。使用 include_once 不会阻止文件被二次包含。有时候可能仍需要重新加载文件 来包含其中定义的全局常量,因为这些常量预加载并不会处理。 因此,哪种方式更好取决于所需的行为。对于本来会使用自动加载器的代码,opcache_compile_file() 有更高的灵活性。而对于本来会需要手动加载的代码,include 会更健壮。
上一篇:
syslog
下一篇:
opcache_compile_file