php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_file_cache.c File Reference
#include "zend.h"
#include "zend_virtual_cwd.h"
#include "zend_compile.h"
#include "zend_vm.h"
#include "zend_interfaces.h"
#include "zend_attributes.h"
#include "zend_system_id.h"
#include "zend_enum.h"
#include "php.h"
#include "ext/standard/php_filestat.h"
#include "ZendAccelerator.h"
#include "zend_file_cache.h"
#include "zend_shared_alloc.h"
#include "zend_accelerator_util_funcs.h"
#include "zend_accelerator_hash.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

Go to the source code of this file.

Data Structures

struct  _zend_file_cache_metainfo
 

Macros

#define zend_file_cache_unlink   unlink
 
#define zend_file_cache_open   open
 
#define LOCK_SH   0
 
#define LOCK_EX   1
 
#define LOCK_UN   2
 
#define O_BINARY   0
 
#define SUFFIX   ".bin"
 
#define IS_SERIALIZED_INTERNED(ptr)
 
#define IS_SERIALIZED(ptr)
 
#define IS_UNSERIALIZED(ptr)
 
#define SERIALIZE_PTR(ptr)
 
#define UNSERIALIZE_PTR(ptr)
 
#define SERIALIZE_STR(ptr)
 
#define UNSERIALIZE_STR(ptr)
 
#define SERIALIZE_ATTRIBUTES(attributes)
 
#define UNSERIALIZE_ATTRIBUTES(attributes)
 
#define HOOKED_ITERATOR_PLACEHOLDER   ((void*)1)
 

Typedefs

typedef struct _zend_file_cache_metainfo zend_file_cache_metainfo
 
typedef void(* serialize_callback_t) (zval *zv, zend_persistent_script *script, zend_file_cache_metainfo *info, void *buf)
 
typedef void(* unserialize_callback_t) (zval *zv, zend_persistent_script *script, void *buf)
 

Functions

int zend_file_cache_script_store (zend_persistent_script *script, bool in_shm)
 
zend_persistent_scriptzend_file_cache_script_load (zend_file_handle *file_handle)
 
void zend_file_cache_invalidate (zend_string *full_path)
 

Macro Definition Documentation

◆ HOOKED_ITERATOR_PLACEHOLDER

#define HOOKED_ITERATOR_PLACEHOLDER   ((void*)1)

Definition at line 190 of file zend_file_cache.c.

◆ IS_SERIALIZED

#define IS_SERIALIZED ( ptr)
Value:
((char*)(ptr) <= (char*)script->size)
void * ptr
Definition ffi.c:3814

Definition at line 121 of file zend_file_cache.c.

◆ IS_SERIALIZED_INTERNED

#define IS_SERIALIZED_INTERNED ( ptr)
Value:
((size_t)(ptr) & Z_UL(1))
#define Z_UL(i)
Definition zend_long.h:49

Definition at line 115 of file zend_file_cache.c.

◆ IS_UNSERIALIZED

#define IS_UNSERIALIZED ( ptr)
Value:
(((char*)(ptr) >= (char*)script->mem && (char*)(ptr) <= (char*)script->mem + script->size) || \
#define IS_ACCEL_INTERNED(str)

Definition at line 123 of file zend_file_cache.c.

◆ LOCK_EX

#define LOCK_EX   1

Definition at line 101 of file zend_file_cache.c.

◆ LOCK_SH

#define LOCK_SH   0

Definition at line 100 of file zend_file_cache.c.

◆ LOCK_UN

#define LOCK_UN   2

Definition at line 102 of file zend_file_cache.c.

◆ O_BINARY

#define O_BINARY   0

Definition at line 110 of file zend_file_cache.c.

◆ SERIALIZE_ATTRIBUTES

#define SERIALIZE_ATTRIBUTES ( attributes)
Value:
do { \
if ((attributes) && !IS_SERIALIZED(attributes)) { \
SERIALIZE_PTR(attributes); \
ht = (attributes); \
UNSERIALIZE_PTR(ht); \
zend_file_cache_serialize_hash(ht, script, info, buf, zend_file_cache_serialize_attribute); \
} \
} while (0)
HashTable * ht
Definition ffi.c:4838
zend_ffi_ctype_name_buf buf
Definition ffi.c:4685
#define IS_SERIALIZED(ptr)
struct _zend_array HashTable
Definition zend_types.h:386

Definition at line 171 of file zend_file_cache.c.

◆ SERIALIZE_PTR

#define SERIALIZE_PTR ( ptr)
Value:
do { \
if (ptr) { \
ZEND_ASSERT(IS_UNSERIALIZED(ptr)); \
(ptr) = (void*)((char*)(ptr) - (char*)script->mem); \
} \
} while (0)
#define IS_UNSERIALIZED(ptr)

Definition at line 126 of file zend_file_cache.c.

◆ SERIALIZE_STR

#define SERIALIZE_STR ( ptr)
Value:
do { \
if (ptr) { \
(ptr) = zend_file_cache_serialize_interned((zend_string*)(ptr), info); \
} else { \
ZEND_ASSERT(IS_UNSERIALIZED(ptr)); \
/* script->corrupted shows if the script in SHM or not */ \
if (EXPECTED(script->corrupted)) { \
GC_ADD_FLAGS(ptr, IS_STR_INTERNED); \
GC_DEL_FLAGS(ptr, IS_STR_PERMANENT); \
} \
(ptr) = (void*)((char*)(ptr) - (char*)script->mem); \
} \
} \
} while (0)
struct _zend_string zend_string
#define EXPECTED(condition)
#define IS_STR_PERMANENT
Definition zend_types.h:819
#define IS_STR_INTERNED
Definition zend_types.h:817

Definition at line 138 of file zend_file_cache.c.

◆ SUFFIX

#define SUFFIX   ".bin"

Definition at line 113 of file zend_file_cache.c.

◆ UNSERIALIZE_ATTRIBUTES

#define UNSERIALIZE_ATTRIBUTES ( attributes)
Value:
do { \
if ((attributes) && !IS_UNSERIALIZED(attributes)) { \
UNSERIALIZE_PTR(attributes); \
ht = (attributes); \
zend_file_cache_unserialize_hash(ht, script, buf, zend_file_cache_unserialize_attribute, NULL); \
} \
} while (0)
#define NULL
Definition gdcache.h:45

Definition at line 181 of file zend_file_cache.c.

◆ UNSERIALIZE_PTR

#define UNSERIALIZE_PTR ( ptr)
Value:
do { \
if (ptr) { \
ZEND_ASSERT(IS_SERIALIZED(ptr)); \
(ptr) = (void*)((char*)buf + (size_t)(ptr)); \
} \
} while (0)

Definition at line 132 of file zend_file_cache.c.

◆ UNSERIALIZE_STR

#define UNSERIALIZE_STR ( ptr)
Value:
do { \
if (ptr) { \
(ptr) = (void*)zend_file_cache_unserialize_interned((zend_string*)(ptr), !script->corrupted); \
} else { \
ZEND_ASSERT(IS_SERIALIZED(ptr)); \
(ptr) = (void*)((char*)buf + (size_t)(ptr)); \
/* script->corrupted shows if the script in SHM or not */ \
if (EXPECTED(!script->corrupted)) { \
GC_ADD_FLAGS(ptr, IS_STR_INTERNED | IS_STR_PERMANENT); \
} else { \
GC_ADD_FLAGS(ptr, IS_STR_INTERNED); \
GC_DEL_FLAGS(ptr, IS_STR_PERMANENT); \
} \
} \
} \
} while (0)
#define IS_SERIALIZED_INTERNED(ptr)

Definition at line 153 of file zend_file_cache.c.

◆ zend_file_cache_open

#define zend_file_cache_open   open

Definition at line 66 of file zend_file_cache.c.

◆ zend_file_cache_unlink

#define zend_file_cache_unlink   unlink

Definition at line 65 of file zend_file_cache.c.

Typedef Documentation

◆ serialize_callback_t

typedef void(* serialize_callback_t) (zval *zv, zend_persistent_script *script, zend_file_cache_metainfo *info, void *buf)

Definition at line 228 of file zend_file_cache.c.

◆ unserialize_callback_t

typedef void(* unserialize_callback_t) (zval *zv, zend_persistent_script *script, void *buf)

Definition at line 233 of file zend_file_cache.c.

◆ zend_file_cache_metainfo

Function Documentation

◆ zend_file_cache_invalidate()

void zend_file_cache_invalidate ( zend_string * full_path)

Definition at line 1998 of file zend_file_cache.c.

◆ zend_file_cache_script_load()

zend_persistent_script * zend_file_cache_script_load ( zend_file_handle * file_handle)

Definition at line 1812 of file zend_file_cache.c.

◆ zend_file_cache_script_store()

int zend_file_cache_script_store ( zend_persistent_script * script,
bool in_shm )

Definition at line 1089 of file zend_file_cache.c.