PHP | realpath_cache_get 函数

Lasted 2021-01-19 18:46:26

realpath_cache_get 函数获取真实目录缓存的详情。

函数定义

realpath_cache_get ( ) : array
// 源文件位于:ext/standard/filestat.c
# 函数定义

PHP_FUNCTION(realpath_cache_get)
{
  realpath_cache_bucket **buckets = realpath_cache_get_buckets(), **end = buckets + realpath_cache_max_buckets();

  ZEND_PARSE_PARAMETERS_NONE();

  array_init(return_value);
  while(buckets < end) {
    realpath_cache_bucket *bucket = *buckets;
    while(bucket) {
      zval entry;

      array_init(&entry);

      /* bucket->key is unsigned long */
      if (ZEND_LONG_MAX >= bucket->key) {
        add_assoc_long_ex(&entry, "key", sizeof("key") - 1, bucket->key);
      } else {
        add_assoc_double_ex(&entry, "key", sizeof("key") - 1, (double)bucket->key);
      }
      add_assoc_bool_ex(&entry, "is_dir", sizeof("is_dir") - 1, bucket->is_dir);
      add_assoc_stringl_ex(&entry, "realpath", sizeof("realpath") - 1, bucket->realpath, bucket->realpath_len);
      add_assoc_long_ex(&entry, "expires", sizeof("expires") - 1, bucket->expires);
#ifdef PHP_WIN32
      add_assoc_bool_ex(&entry, "is_rvalid", sizeof("is_rvalid") - 1, bucket->is_rvalid);
      add_assoc_bool_ex(&entry, "is_wvalid", sizeof("is_wvalid") - 1, bucket->is_wvalid);
      add_assoc_bool_ex(&entry, "is_readable", sizeof("is_readable") - 1, bucket->is_readable);
      add_assoc_bool_ex(&entry, "is_writable", sizeof("is_writable") - 1, bucket->is_writable);
#endif
      zend_hash_str_update(Z_ARRVAL_P(return_value), bucket->path, bucket->path_len, &entry);
      bucket = bucket->next;
    }
    buckets++;
  }
}

参数

  • checkNone - 无。

返回值

  • checkint - 返回真实路径缓存详情的数组。

示例1: - 使用 realpath_cache_get() 函数获取真实目录缓存的详情。

<?php
/**
 * PHP realpath_cache_get() 函数获取真实目录缓存的详情。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 获取缓存目录信息
$info = realpath_cache_get();

print_r($info);
Array
(
  [/data/docs/t.php] => Array
    (
      [key] => 1.7397249540873E+19
      [is_dir] => 
      [realpath] => /data/docs/t.php
      [expires] => 1611051296
    )
  ...
)