PHP Meminfo is a PHP extension that gives you insights on the PHP memory content

Overview

MEMINFO

PHP Meminfo is a PHP extension that gives you insights on the PHP memory content.

Its main goal is to help you understand memory leaks: by looking at data present in memory, you can better understand your application behaviour.

One of the main sources of inspiration for this tool is the Java jmap tool with the -histo option (see man jmap).

Build

Compatibility

PHP 7.x, 8.0.

For older versions of PHP, you can use the following releases:

  • 5.6: PHP Meminfo v1.1
  • 5.5: PHP Meminfo v1.0.5 (may work with PHP 5.3 and PHP 5.4 but not tested)

Compilation instructions

Compilation

From the root of the extension directory:

$ phpize
$ ./configure --enable-meminfo
$ make
$ make install

Enabling the extension

Add the following line to your php.ini:

extension=meminfo.so

Installing analyzers

Analyzers allow to analyze a memory dump (see below).

$ cd analyzer
$ composer install

Usage

Dumping memory content

meminfo_dump(fopen('/tmp/my_dump_file.json', 'w'));

This function generates a dump of the PHP memory in a JSON format. This dump can be later analyzed by the provided analyzers.

This function takes a stream handle as a parameter. It allows you to specify a file (ex fopen('/tmp/file.txt', 'w'), as well as to use standard output with the php://stdout stream.

Displaying a summary of items in memory

$ bin/analyzer summary <dump-file>

Arguments:
  dump-file             PHP Meminfo Dump File in JSON format

Example

$ bin/analyzer summary /tmp/my_dump_file.json
+----------+-----------------+-----------------------------+
| Type     | Instances Count | Cumulated Self Size (bytes) |
+----------+-----------------+-----------------------------+
| string   | 132             | 7079                        |
| MyClassA | 100             | 7200                        |
| array    | 10              | 720                         |
| integer  | 5               | 80                          |
| float    | 2               | 32                          |
| null     | 1               | 16                          |
+----------+-----------------+-----------------------------+

Displaying a list of objects with the largest number of children

$ bin/analyzer top-children [options] [--] <dump-file>

Arguments:
  dump-file             PHP Meminfo Dump File in JSON format

Options:
  -l, --limit[=LIMIT]   limit [default: 5]

Example

$ bin/analyzer top-children /tmp/my_dump_file.json
+-----+----------------+----------+
| Num | Item ids       | Children |
+-----+----------------+----------+
| 1   | 0x7ffff4e22fe0 | 1000000  |
| 2   | 0x7fffe780e5c8 | 11606    |
| 3   | 0x7fffe9714ef0 | 11602    |
| 4   | 0x7fffeab63ca0 | 3605     |
| 5   | 0x7fffd3161400 | 2400     |
+-----+----------------+----------+

Querying the memory dump to find specific objects

$ bin/analyzer query [options] [--] <dump-file>

Arguments:
  dump-file              PHP Meminfo Dump File in JSON format

Options:
  -f, --filters=FILTERS  Filter on an attribute. Operators: =, ~. Example: class~User (multiple values allowed)
  -l, --limit=LIMIT      Number of results limit (default 10).
  -v                     Increase the verbosity

Example

$ bin/analyzer query -v -f "class=MyClassA" -f "is_root=0" /tmp/php_mem_dump.json
+----------------+-------------------+------------------------------+
| Item ids       | Item data         | Children                     |
+----------------+-------------------+------------------------------+
| 0x7f94a1877008 | Type: object      | myObjectName: 0x7f94a185cca0 |
|                | Class: MyClassA   |                              |
|                | Object Handle: 1  |                              |
|                | Size: 72 B        |                              |
|                | Is root: No       |                              |
+----------------+-------------------+------------------------------+
| 0x7f94a1877028 | Type: object      | myObjectName: 0x7f94a185cde0 |
|                | Class: MyClassA   |                              |
|                | Object Handle: 2  |                              |
|                | Size: 72 B        |                              |
|                | Is root: No       |                              |
+----------------+-------------------+------------------------------+
| 0x7f94a1877048 | Type: object      | myObjectName: 0x7f94a185cf20 |
|                | Class: MyClassA   |                              |
...

Displaying the reference path

The reference path is the path between a specific item in memory (identified by its pointer address) and all the intermediary items up to the one item that is attached to a variable still alive in the program.

This path shows which items are responsible for the memory leak of the specific item provided.

$ bin/analyzer ref-path <item-id> <dump-file>

Arguments:
  item-id               Item Id in 0xaaaaaaaa format
  dump-file             PHP Meminfo Dump File in JSON format

Options:
  -v                     Increase the verbosity

Example

$ bin/analyzer ref-path -v 0x7f94a1877068 /tmp/php_mem_dump.json
Found 1 paths
Path from 0x7f94a1856260
+--------------------+
| Id: 0x7f94a1877068 |
| Type: object       |
| Class: MyClassA    |
| Object Handle: 4   |
| Size: 72 B         |
| Is root: No        |
| Children count: 1  |
+--------------------+
         ^
         |
         3
         |
         |
+---------------------+
| Id: 0x7f94a185cb60  |
| Type: array         |
| Size: 72 B          |
| Is root: No         |
| Children count: 100 |
+---------------------+
         ^
         |
    second level
         |
         |
+--------------------+
| Id: 0x7f94a185ca20 |
| Type: array        |
| Size: 72 B         |
| Is root: No        |
| Children count: 1  |
+--------------------+
         ^
         |
    first level
         |
         |
+---------------------------+
| Id: 0x7f94a1856260        |
| Type: array               |
| Size: 72 B                |
| Is root: Yes              |
| Execution Frame: <GLOBAL> |
| Symbol Name: myRootArray  |
| Children count: 1         |
+---------------------------+

A workflow to find and understand memory leaks using PHP Meminfo

Hunting down memory leaks

Other memory debugging tools for PHP

  • XDebug (https://xdebug.org/) With the trace feature and the memory delta option (tool see XDebug documentation), you can trace function memory usage. You can use the provided script to get an aggregated view (TODO link)

  • PHP Memprof (https://github.com/arnaud-lb/php-memory-profiler) Provides aggregated data about memory usage by functions. Far less resource intensive than a full trace from XDebug.

Troubleshooting

"A lot of memory usage is reported by the memory_usage entry, but the cumulative size of the items in the summary is far lower than the memory usage"

A lot of memory is used internally by the Zend Engine itself to compile PHP files, to run the virtual machine, to execute the garbage collector, etc... Another part of the memory is usually taken by PHP extensions themselves. And the remaining memory usage comes from the PHP data structures from your program.

In some cases, several hundred megabytes can be used internally by some PHP extensions. Examples are the PDO extension and MySQLi extension. By default, when executing a SQL query they will buffer all the results inside the PHP memory: http://php.net/manual/en/mysqlinfo.concepts.buffering.php

In case of very large number of results, this will consume a lot of memory, and this memory usage is not caused by the data you have in your objects or array manipulated by your program, but by the way the extension works.

This is only one example, but the same can happen with image manipulation extensions, that will use a lot of memory to transform images.

All the extensions are using the Zend Memory Manager, so that they will not exceed the maximum memory limit set for the PHP process. So their memory usage is included in the information provided by memory_get_usage().

But PHP Meminfo is only able to get information on memory used by the data structure from the PHP program, not from the extensions themselves.

Hence the difference between those numbers, which can be quite big.

"Call to undefined function" when calling meminfo_dump

This means the extension is not enabled.

Check the PHP Info output and look for the MemInfo data.

To see the PHP Info output, just create a page calling the phpinfo(); function, and load it from your browser, or call php -i from the command line.

Why most tests are "skipped"?

While doing a make test, some tests will need JSON capabilities. But the compilation system generates a clean env by removing all configuration directives that load extensions. So if JSON capabilites are packaged as a separate extension (instead of being compiled directly in the PHP runtime), the tests will be skipped.

You may run them with the run-tests.php generated after the make test command, by providing the php executable:

$ TEST_PHP_EXECUTABLE=$(which php) $(which php) run-tests.php -d extension=$PWD/modules/meminfo.so

In this case your tests will run with your local PHP configuration, including the loading of the JSON extension.

Please note this is not required when working with PHP 8 as the JSON functions are now usually complied in PHP directly.

Credits

Thanks to Derick Rethans for his inspirational work on the essential XDebug. See http://www.xdebug.org/

Comments
  • Objects that are still in memory but not shown by php-meminfo

    Objects that are still in memory but not shown by php-meminfo

    I tried using php-meminfo in finding out why in a specific case PDO connections were being kept open. PDO connections only close when they end up out of scope without a refcount so I kinda knew where to look.

    After addressing some issues ( https://github.com/BitOne/php-meminfo/pull/62 ) and even adding a little object store dumper to this extension (see paste below) I noticed that even though php-meminfo wasn't showing me these instances, they were still actively in memory.

    This problem occured in a Laravel+Laravel Doctrine project. I suspect that these PDO instances might be referenced in closures somewhere? But maybe they're referenced in a different call stack? Is there any way we could have php-meminfo actually find references to these objects somehow?

    Attachment, overly simple object_store_dump():

    PHP_FUNCTION(object_store_dump)
    {
            zend_object **obj_ptr, **end, *obj;
    
            if (EG(objects_store).top <= 1) {
                    return;
            }
    
            end = EG(objects_store).object_buckets + 1;
            obj_ptr = EG(objects_store).object_buckets + EG(objects_store).top;
    
            do {
                    obj_ptr--;
                    obj = *obj_ptr;
    
                    if (IS_OBJ_VALID(obj)) {
                            php_printf("object: %s: %d\n", obj->ce->name->val, obj->handle );
    
                            if (!(GC_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
                                    php_printf("- DESTRUCTOR NOT CALLED\n");
                            }
    
                            if (!(GC_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
                                    php_printf("- FREE NOT CALLED\n");
                            }
    
                    }
            } while (obj_ptr != end);
    }
    
    opened by mathieuk 17
  • Make fails on PHP 7.3 in Linux

    Make fails on PHP 7.3 in Linux

    When I follow the README instructions as such:

    $ git clone ...
    $ cd php-meminfo/extension/php7
    $ phpize
    $ make
    

    On Ubuntu 18.04 I receive errors as such:

    /bin/bash /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/libtool --mode=compile cc  -I. -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7 -DPHP_ATOM_INC -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7/include -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7/main -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7 -I/usr/include/php/20190529 -I/usr/include/php/20190529/main -I/usr/include/php/20190529/TSRM -I/usr/include/php/20190529/Zend -I/usr/include/php/20190529/ext -I/usr/include/php/20190529/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c -o meminfo.lo
    mkdir .libs
     cc -I. -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7 -DPHP_ATOM_INC -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7/include -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7/main -I/home/ojrask/tmp/meminfo/php-meminfo/extension/php7 -I/usr/include/php/20190529 -I/usr/include/php/20190529/main -I/usr/include/php/20190529/TSRM -I/usr/include/php/20190529/Zend -I/usr/include/php/20190529/ext -I/usr/include/php/20190529/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c  -fPIC -DPIC -o .libs/meminfo.o
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c: In function ‘zif_meminfo_dump’:
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:61:66: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
         php_stream_printf(stream TSRMLS_CC, "    \"memory_usage\" : %d,\n", zend_memory_usage(0));
                                                                     ~^      ~~~~~~~~~~~~~~~~~~~~
                                                                     %ld
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:62:71: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
         php_stream_printf(stream TSRMLS_CC, "    \"memory_usage_real\" : %d,\n", zend_memory_usage(1));
                                                                          ~^      ~~~~~~~~~~~~~~~~~~~~
                                                                          %ld
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:63:71: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
         php_stream_printf(stream TSRMLS_CC, "    \"peak_memory_usage\" : %d,\n", zend_memory_peak_usage(0));
                                                                          ~^      ~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                          %ld
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:64:76: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
         php_stream_printf(stream TSRMLS_CC, "    \"peak_memory_usage_real\" : %d\n", zend_memory_peak_usage(1));
                                                                               ~^     ~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                               %ld
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c: In function ‘meminfo_browse_class_static_members’:
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:135:26: error: ‘zend_class_entry {aka struct _zend_class_entry}’ has no member named ‘static_members_table’; did you mean ‘static_members_table__ptr’?
             if (class_entry->static_members_table) {
                              ^~~~~~~~~~~~~~~~~~~~
                              static_members_table__ptr
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:145:42: error: ‘zend_class_entry {aka struct _zend_class_entry}’ has no member named ‘static_members_table’; did you mean ‘static_members_table__ptr’?
                         prop = &class_entry->static_members_table[prop_info->offset];
                                              ^~~~~~~~~~~~~~~~~~~~
                                              static_members_table__ptr
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c: In function ‘meminfo_zval_dump’:
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:358:22: warning: implicit declaration of function ‘Z_OBJDEBUG_P’; did you mean ‘Z_OBJCE_P’? [-Wimplicit-function-declaration]
             properties = Z_OBJDEBUG_P(zv, is_temp);
                          ^~~~~~~~~~~~
                          Z_OBJCE_P
    /home/ojrask/tmp/meminfo/php-meminfo/extension/php7/meminfo.c:358:20: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
             properties = Z_OBJDEBUG_P(zv, is_temp);
                        ^
    Makefile:191: recipe for target 'meminfo.lo' failed
    make: *** [meminfo.lo] Error 1
    

    And on a dockerized CentOS/RHEL environment the same procedure fails with errors similar to the following:

    In file included from /opt/php-meminfo-master/extension/php7/meminfo.c:6:0:                                                                                                                                                      
    /opt/php-meminfo-master/extension/php7/php_meminfo.h:21:65: error: unknown type name 'zend_string'                                                                                                                               
     void meminfo_zval_dump(php_stream * stream, char * frame_label, zend_string * symbol_name, zval * zv, HashTable *visited_items, int *first_element);                                                                                         
                                                                     ^                                                                                                                                                                            
    In file included from /opt/php-meminfo-master/extension/php7/meminfo.c:6:0:                                                                                                                                                      
    /opt/php-meminfo-master/extension/php7/php_meminfo.h:29:1: error: unknown type name 'zend_string'                                                                                                                                
     zend_string * meminfo_escape_for_json(const char *s);                                                                                                                                                                                        
     ^                                                                                                                                                                                                                                            
    /opt/php-meminfo-master/extension/php7/meminfo.c: In function 'zif_meminfo_dump':                                                                                                                                                
    /opt/php-meminfo-master/extension/php7/meminfo.c:57:5: warning: passing argument 1 of 'zend_fetch_resource' from incompatible pointer type [enabled by default]                                                                  
         php_stream_from_zval(stream, zval_stream);                                                                                                                                                                                               
         ^                                                                                                                                                                                                                                        
    In file included from /usr/include/php/Zend/zend_API.h:27:0,                                                                                                                                                                                  
                     from /usr/include/php/main/php.h:38,                                                                                                                                                                                         
                     from /opt/php-meminfo-master/extension/php7/meminfo.c:5:                                                                                                                                                        
    /usr/include/php/Zend/zend_list.h:83:16: note: expected 'struct zval **' but argument is of type 'struct zval *'                                                                                                                              
     ZEND_API void *zend_fetch_resource(zval **passed_id TSRMLS_DC, int default_id, const char *resource_type_name, int *found_resource_type, int num_resource_types, ...);                                                                       
                    ^                                                                                                                                                                                                                             
    /opt/php-meminfo-master/extension/php7/meminfo.c: In function 'meminfo_browse_exec_frames':                                                                                                                                      
    /opt/php-meminfo-master/extension/php7/meminfo.c:83:5: error: unknown type name 'zend_array'                                                                                                                                     
         zend_array *p_symbol_table;                                                                                                                                                                                                              
         ^                        
    

    (The error above is a snippet from the full error list, which is a lot longer.)

    PHP version is 7.3.9, and PHP development tooling has been installed in both cases. PHP is installed from deb.sury.org on the Ubuntu machine, and from remirepo in the CentOS/RHEL image.

    opened by rask 6
  • Memory leak not displayed in the dump

    Memory leak not displayed in the dump

    First of all, this is a great extension, thank you. Is making my life really easier.

    But here my issue... (looks rather similar to https://github.com/BitOne/php-meminfo/issues/54). As you pointed in https://github.com/BitOne/php-meminfo/issues/54 there might be an extension leak... or this extension is not able to detect some memory content.

    However, running this:

    for ($i = 0; $i<100; $i++){
      $func();
      echo round(memory_get_usage()/1024/1024, 6).PHP_EOL;
      gc_collect_cycles();
    }
    echo round(memory_get_usage()/1024/1024, 6).PHP_EOL;
    meminfo_dump(fopen('dump_file_z.json', 'w'));
    

    $func is a closure that runs a complete symfony 3.4 app.

    Independently from how many iterations does the for loop, the dumped file looks always the same, but memory usage goes up ~2MB on each loop iteration (reaching my current 500MB memory limit).

    Here the dump:

    root@dad957857bb5:/opt/php-meminfo/analyzer# bin/analyzer summary dump.json 
    +-------------------------------+-----------------+-----------------------------+
    | Type                          | Instances Count | Cumulated Self Size (bytes) |
    +-------------------------------+-----------------+-----------------------------+
    | string                        | 1090            | 63384                       |
    | array                         | 492             | 35424                       |
    | integer                       | 281             | 4496                        |
    | boolean                       | 39              | 624                         |
    | null                          | 8               | 128                         |
    | unknown                       | 5               | 80                          |
    | Composer\Autoload\ClassLoader | 1               | 72                          |
    | DateTimeZone                  | 1               | 72                          |
    | Predis\Response\Status        | 1               | 72                          |
    +-------------------------------+-----------------+-----------------------------+
    

    Any idea on what could be?

    opened by goetas 6
  • Error with analyze dump memory

    Error with analyze dump memory

    Hi! Trying to make memory dump:

    gc_collect_cycles();
    meminfo_dump(fopen('/home/dmitriy/phpmem/my_dump_file.json', 'w'));`
    

    Then run analyzer and receive an error:

    $ analyzer/bin/analyzer summary my_dump_file.json
    
    [Symfony\Component\Serializer\Exception\UnexpectedValueException]  
    Control character error, possibly incorrectly encoded    
    
    $ ls -al
    -rw-rw-r--  1 dmitriy dmitriy 8093889 Ноя 21 15:30 my_dump_file.json
    

    In memory dump I have next item:

        "0x7f31bcb13620" : {
            "type" : "array",
            "size" : "72",
            "is_root" : false
    ,
            "children" : {
                "1|	":"0x7f31be24dca0"
            }
    
        }
    

    Why dump create this "1| ":"0x7f31be24dca0" ? This is not valid json.


    Second question:

    $ analyzer/bin/analyzer ref-path 0x7f254b257c20 my_dump_file100.json 
    
    Found 2 paths
    Path from 0x7f255ce562c0
    0x7f254b257c20
          ^       
          |       
    _entityManager
          |       
          |       
    0x7f254b2d1d40
          ^       
          |       
    runningCommand
          |       
          |       
    0x7f255ce562c0
    
    Path from 0x7f255ce562e0
    0x7f254b257c20
          ^       
          |       
    _entityManager
          |       
          |       
    0x7f254b2d1d40
          ^       
          |       
    runningCommand
          |       
          |       
    0x7f255ce562c0
          ^       
          |       
     application  
          |       
          |       
    0x7f255ce562e0
    

    It is not, what I see here: https://github.com/BitOne/php-meminfo/blob/master/doc/hunting_down_memory_leaks.md#4-finding-references-to-the-leaked-object

    How to understand with this output like you write in your example:

    So the reason why our object is still in memory is because it's in an array, that is itself in another array that is in an final array. And the final array is directly linked to the variable declared in the frame and called myRootArray.

    I think you need to add parameter -v in example:

    $ bin/analyzer ref-path 0x7f94a1877068 /tmp/php_mem_dump.json

    bug 
    opened by Shkarbatov 5
  • Extension does not compile on Mac

    Extension does not compile on Mac

    Here's the output I get for make:

    /bin/sh /Users/kix/Documents/Code/php/php-meminfo/extension/libtool --mode=compile cc  -I. -I/Users/kix/Documents/Code/php/php-meminfo/extension -DPHP_ATOM_INC -I/Users/kix/Documents/Code/php/php-meminfo/extension/include -I/Users/kix/Documents/Code/php/php-meminfo/extension/main -I/Users/kix/Documents/Code/php/php-meminfo/extension -I/usr/local/Cellar/php56/5.6.17/include/php -I/usr/local/Cellar/php56/5.6.17/include/php/main -I/usr/local/Cellar/php56/5.6.17/include/php/TSRM -I/usr/local/Cellar/php56/5.6.17/include/php/Zend -I/usr/local/Cellar/php56/5.6.17/include/php/ext -I/usr/local/Cellar/php56/5.6.17/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c -o meminfo.lo
     cc -I. -I/Users/kix/Documents/Code/php/php-meminfo/extension -DPHP_ATOM_INC -I/Users/kix/Documents/Code/php/php-meminfo/extension/include -I/Users/kix/Documents/Code/php/php-meminfo/extension/main -I/Users/kix/Documents/Code/php/php-meminfo/extension -I/usr/local/Cellar/php56/5.6.17/include/php -I/usr/local/Cellar/php56/5.6.17/include/php/main -I/usr/local/Cellar/php56/5.6.17/include/php/TSRM -I/usr/local/Cellar/php56/5.6.17/include/php/Zend -I/usr/local/Cellar/php56/5.6.17/include/php/ext -I/usr/local/Cellar/php56/5.6.17/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c  -fno-common -DPIC -o .libs/meminfo.o
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:241:41: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
        php_stream_printf(stream TSRMLS_CC, meminfo_info_dump_header(header, sizeof(header)));
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:261:35: error: too few arguments to function call, single argument 'tsrm_ls' was not specified
            zend_rebuild_symbol_table();
            ~~~~~~~~~~~~~~~~~~~~~~~~~ ^
    /usr/local/Cellar/php56/5.6.17/include/php/Zend/zend_API.h:525:1: note: 'zend_rebuild_symbol_table' declared here
    ZEND_API void zend_rebuild_symbol_table(TSRMLS_D);
    ^
    /usr/local/Cellar/php56/5.6.17/include/php/main/php_config.h:6:19: note: expanded from macro 'ZEND_API'
    # define ZEND_API __attribute__ ((visibility("default")))
                      ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:276:31: error: too few arguments to function call, single argument 'tsrm_ls' was not specified
        zend_rebuild_symbol_table();
        ~~~~~~~~~~~~~~~~~~~~~~~~~ ^
    /usr/local/Cellar/php56/5.6.17/include/php/Zend/zend_API.h:525:1: note: 'zend_rebuild_symbol_table' declared here
    ZEND_API void zend_rebuild_symbol_table(TSRMLS_D);
    ^
    /usr/local/Cellar/php56/5.6.17/include/php/main/php_config.h:6:19: note: expanded from macro 'ZEND_API'
    # define ZEND_API __attribute__ ((visibility("default")))
                      ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:327:36: error: use of undeclared identifier 'tsrm_ls'
        zend_objects_store *objects = &EG(objects_store);
                                       ^
    /usr/local/Cellar/php56/5.6.17/include/php/Zend/zend_globals_macros.h:45:16: note: expanded from macro 'EG'
    # define EG(v) TSRMG(executor_globals_id, zend_executor_globals *, v)
                   ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:164:57: note: expanded from macro 'TSRMG'
    #define TSRMG(id, type, element)        (((type) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(id)])->element)
                                                                   ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:392:30: error: use of undeclared identifier 'tsrm_ls'
        php_stream_printf(stream TSRMLS_CC, "        \"children\" : {\n");
                                 ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:398:38: error: use of undeclared identifier 'tsrm_ls'
                php_stream_printf(stream TSRMLS_CC, ",\n");
                                         ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:410:46: error: use of undeclared identifier 'tsrm_ls'
                        php_stream_printf(stream TSRMLS_CC, "            \"%s\":\"%p\"", meminfo_escape_for_json(property_name), *zval );
                                                 ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:412:46: error: use of undeclared identifier 'tsrm_ls'
                        php_stream_printf(stream TSRMLS_CC, "            \"%s\":\"%p\"", meminfo_escape_for_json(key), *zval );
                                                 ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:417:42: error: use of undeclared identifier 'tsrm_ls'
                    php_stream_printf(stream TSRMLS_CC, "            \"%ld\":\"%p\"", num_key, *zval );
                                             ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:423:30: error: use of undeclared identifier 'tsrm_ls'
        php_stream_printf(stream TSRMLS_CC, "\n        }\n");
                                 ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:442:34: error: use of undeclared identifier 'tsrm_ls'
            php_stream_printf(stream TSRMLS_CC, "\n    },\n");
                                     ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:447:30: error: use of undeclared identifier 'tsrm_ls'
        php_stream_printf(stream TSRMLS_CC, "    \"%s\" : {\n", zval_id);
                                 ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:448:30: error: use of undeclared identifier 'tsrm_ls'
        php_stream_printf(stream TSRMLS_CC, "        \"type\" : \"%s\",\n", zend_get_type_by_const(Z_TYPE_P(zv)));
                                 ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:449:30: error: use of undeclared identifier 'tsrm_ls'
        php_stream_printf(stream TSRMLS_CC, "        \"size\" : \"%ld\",\n", meminfo_get_element_size(zv));
                                 ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:453:38: error: use of undeclared identifier 'tsrm_ls'
                php_stream_printf(stream TSRMLS_CC, "        \"symbol_name\" : \"%s\",\n", meminfo_escape_for_json(symbol_name));
                                         ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:455:34: error: use of undeclared identifier 'tsrm_ls'
            php_stream_printf(stream TSRMLS_CC, "        \"is_root\" : true,\n");
                                     ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:456:34: error: use of undeclared identifier 'tsrm_ls'
            php_stream_printf(stream TSRMLS_CC, "        \"frame\" : \"%s\"\n", meminfo_escape_for_json(frame_label));
                                     ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:458:34: error: use of undeclared identifier 'tsrm_ls'
            php_stream_printf(stream TSRMLS_CC, "        \"is_root\" : false\n");
                                     ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:468:34: error: use of undeclared identifier 'tsrm_ls'
            php_stream_printf(stream TSRMLS_CC, ",\n");
                                     ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    /Users/kix/Documents/Code/php/php-meminfo/extension/meminfo.c:469:34: error: use of undeclared identifier 'tsrm_ls'
            php_stream_printf(stream TSRMLS_CC, "        \"class\" : \"%s\",\n", meminfo_escape_for_json(meminfo_get_classname(zv->value.obj.handle)));
                                     ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:168:21: note: expanded from macro 'TSRMLS_CC'
    #define TSRMLS_CC       , TSRMLS_C
                              ^
    /usr/local/Cellar/php56/5.6.17/include/php/TSRM/TSRM.h:167:18: note: expanded from macro 'TSRMLS_C'
    #define TSRMLS_C        tsrm_ls
                            ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    1 warning and 20 errors generated.
    make: *** [meminfo.lo] Error 1
    
    opened by kix 5
  • Wrong frame name for PHP 7

    Wrong frame name for PHP 7

    With the following code::

    <?php
    unset($_GET);
    unset($_FILES);
    unset($_POST);
    unset($_SERVER);
    unset($_COOKIE);
    unset($argv);
    unset($argc);
    
    function test() {
        $a = "test";
        meminfo_dump(fopen('php://stdout', 'w'));
    }   
    
    test();
    

    When executed with the PHP 7 version of the extension provides the following result:

    {
    "items": {
        "0x7f347ea57180" : {
            "type" : "unknown",
            "size" : "16",
            "symbol_name" : "argv",
            "is_root" : true,
            "frame" : "test()"
        },
        "0x7f347ea571a0" : {
            "type" : "unknown",
            "size" : "16",
            "symbol_name" : "argc",
            "is_root" : true,
            "frame" : "test()"
      }
    }
    

    The a variable is not present and the argv and argc variables are defined at the wrong frame.

    Comparing to the execution with the PHP 5 version of the extension:

    {
      "items": {
        "0x7fc6ca961158" : {
            "type" : "string",
            "size" : "28",
            "symbol_name" : "a",
            "is_root" : true,
            "frame" : "test()"
        }
    }
    
    bug 
    opened by BitOne 3
  • multiple minor fixes

    multiple minor fixes

    Nuked a number of unused variable, fixed static build, plugged a minor memleak due to a zval being (un)initialized, replaced direct struct access with appropriate macros.

    opened by tony2001 2
  • Fix segfault when zend_rebuild_symbol_table returns null

    Fix segfault when zend_rebuild_symbol_table returns null

    If meminfo_dump is called inside a shutdown function (register_shutdown_function), zend_rebuild_symbol_table can return null. This causes a segfault.

    Shutdown functions are used in a couple of different event-loop implementations.

    This fix just skips over browsing the null symbol table.

    opened by mbonneau 2
  • Brew install fails

    Brew install fails

    Hey,

    first of all thanks for creating this package.

    But my issue is that I can not install it with brew.

    $ brew install php71-meminfo 
    Error: No available formula with the name "php71-meminfo" 
    ==> Searching for a previously deleted formula (in the last month)...
    Error: No previously deleted formula found.
    ==> Searching for similarly named formulae...
    ==> Searching local taps...
    Error: No similarly named formulae found.
    ==> Searching taps...
    ==> Searching taps on GitHub...
    Error: No formulae found in taps.
    

    I alos tried brew install php72-meminfo brew install php-meminfo

    enhancement 
    opened by SudoGetBeer 2
  • Add MacOS setup information into the README

    Add MacOS setup information into the README

    Homebrew is a very popular package manager for MacOS.

    I just package the extension for all available PHP version.

    This PR add information about these package to simplify setup on MacOS.

    opened by jdecool 2
  • Method

    Method "meminfo_size_info" undefined

    Hello,

    The method « meminfo_size_info » is in the GitHub documentation but it is considered as undefined when I call it. The others functions work well. Any idea ?

    Fabien

    bug 
    opened by FabienSerny 2
  • Please release a PHP 8-compatible version

    Please release a PHP 8-compatible version

    The last version released was 1.1.1 which does not compile with PHP 8, but I see PHP 8-compatibility code was added to this repository in 2021. Please release a new stable version.

    opened by ryandesign 0
  • Malformed UTF-8 characters, possibly incorrectly encoded

    Malformed UTF-8 characters, possibly incorrectly encoded

    Sometimes, this extension will generate on undecodable json file. Last time this happened to me, it was about a copyright character:

        "0x7f94f5289418" : {
            "type" : "array",
            "size" : "72",
            "is_root" : false
    ,
            "children" : {
                "Attribute":"0x4416a9c8",
                "Composer\\InstalledVersions":"0x4416a9e8",
                "JakubOnderka\\PhpParallelLint\\Application":"0x4416aa08",
                "JakubOnderka\\PhpParallelLint\\ArrayIterator":"0x4416aa28",
                "JakubOnderka\\PhpParallelLint\\Blame":"0x4416aa48",
                "JakubOnderka\\PhpParallelLint\\CheckstyleOutput":"0x4416aa68",
                "JakubOnderka\\PhpParallelLint\\ConsoleWriter":"0x4416aa88",
                "JakubOnderka\\PhpParallelLint\\Contracts\\SyntaxErrorCallback":"0x4416aaa8",
                "JakubOnderka\\PhpParallelLint\\Error":"0x4416aac8",
                "JakubOnderka\\PhpParallelLint\\ErrorFormatter":"0x4416aae8",
                "JakubOnderka\\PhpParallelLint\\Exception":"0x4416ab08",
                "JakubOnderka\\PhpParallelLint\\FileWriter":"0x4416ab28",
                "JakubOnderka\\PhpParallelLint\\GitLabOutput":"0x4416ab48",
                "JakubOnderka\\PhpParallelLint\\IWriter":"0x4416ab68",
                "JakubOnderka\\PhpParallelLint\\InvalidArgumentException":"0x4416ab88",
                "JakubOnderka\\PhpParallelLint\\JsonOutput":"0x4416aba8",
                "JakubOnderka\\PhpParallelLint\\Manager":"0x4416abc8",
                "JakubOnderka\\PhpParallelLint\\MultipleWriter":"0x4416abe8",
                "JakubOnderka\\PhpParallelLint\\NotExistsClassException":"0x4416ac08",
                "JakubOnderka\\PhpParallelLint\\NotExistsPathException":"0x4416ac28",
                "JakubOnderka\\PhpParallelLint\\NotImplementCallbackException":"0x4416ac48",
                "JakubOnderka\\PhpParallelLint\\NullWriter":"0x4416ac68",
                "JakubOnderka\\PhpParallelLint\\Output":"0x4416ac88",
                "JakubOnderka\\PhpParallelLint\\ParallelLint":"0x4416aca8",
                "JakubOnderka\\PhpParallelLint\\Process\\GitBlameProcess":"0x4416acc8",
                "JakubOnderka\\PhpParallelLint\\Process\\LintProcess":"0x4416ace8",
                "JakubOnderka\\PhpParallelLint\\Process\\PhpExecutable":"0x4416ad08",
                "JakubOnderka\\PhpParallelLint\\Process\\PhpProcess":"0x4416ad28",
                "JakubOnderka\\PhpParallelLint\\Process\\Process":"0x4416ad48",
                "JakubOnderka\\PhpParallelLint\\Process\\SkipLintProcess":"0x4416ad68",
                "JakubOnderka\\PhpParallelLint\\RecursiveDirectoryFilterIterator":"0x4416ad88",
                "JakubOnderka\\PhpParallelLint\\Result":"0x4416ada8",
                "JakubOnderka\\PhpParallelLint\\RunTimeException":"0x4416adc8",
                "JakubOnderka\\PhpParallelLint\\Settings":"0x4416ade8",
                "JakubOnderka\\PhpParallelLint\\SyntaxError":"0x4416ae08",
                "JakubOnderka\\PhpParallelLint\\TextOutput":"0x4416ae28",
                "JakubOnderka\\PhpParallelLint\\TextOutputColored":"0x4416ae48",
                "JsonException":"0x4416ae68",
                "JsonSerializable":"0x4416ae88",
                "Normalizer":"0x4416aea8",
                "PHPUnit\\Exception":"0x4416aec8",
                "PHPUnit\\Framework\\ActualValueIsNotAnObjectException":"0x4416aee8",
                "PHPUnit\\Framework\\Assert":"0x4416af08",
                "PHPUnit\\Framework\\AssertionFailedError":"0x4416af28",
                "PHPUnit\\Framework\\CodeCoverageException":"0x4416af48",
                "PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException":"0x4416af68",
                "PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException":"0x4416af88",
                "PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException":"0x4416afa8",
                "PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException":"0x4416afc8",
                "PHPUnit\\Framework\\ComparisonMethodDoesNotExistException":"0x4416afe8",
                "PHPUnit\\Framework\\Constraint\\ArrayHasKey":"0x4416b008",
                "PHPUnit\\Framework\\Constraint\\BinaryOperator":"0x4416b028",
                "PHPUnit\\Framework\\Constraint\\Callback":"0x4416b048",
                "PHPUnit\\Framework\\Constraint\\ClassHasAttribute":"0x4416b068",
                "PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute":"0x4416b088",
                "PHPUnit\\Framework\\Constraint\\Constraint":"0x4416b0a8",
                "PHPUnit\\Framework\\Constraint\\Count":"0x4416b0c8",
                "PHPUnit\\Framework\\Constraint\\DirectoryExists":"0x4416b0e8",
                "PHPUnit\\Framework\\Constraint\\Exception":"0x4416b108",
                "PHPUnit\\Framework\\Constraint\\ExceptionCode":"0x4416b128",
                "PHPUnit\\Framework\\Constraint\\ExceptionMessage":"0x4416b148",
                "PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression":"0x4416b168",
                "PHPUnit\\Framework\\Constraint\\FileExists":"0x4416b188",
                "PHPUnit\\Framework\\Constraint\\GreaterThan":"0x4416b1a8",
                "PHPUnit\\Framework\\Constraint\\IsAnything":"0x4416b1c8",
                "PHPUnit\\Framework\\Constraint\\IsEmpty":"0x4416b1e8",
                "PHPUnit\\Framework\\Constraint\\IsEqual":"0x4416b208",
                "PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing":"0x4416b228",
                "PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase":"0x4416b248",
                "PHPUnit\\Framework\\Constraint\\IsEqualWithDelta":"0x4416b268",
                "PHPUnit\\Framework\\Constraint\\IsFalse":"0x4416b288",
                "PHPUnit\\Framework\\Constraint\\IsFinite":"0x4416b2a8",
                "PHPUnit\\Framework\\Constraint\\IsIdentical":"0x4416b2c8",
                "PHPUnit\\Framework\\Constraint\\IsInfinite":"0x4416b2e8",
                "PHPUnit\\Framework\\Constraint\\IsInstanceOf":"0x4416b308",
                "PHPUnit\\Framework\\Constraint\\IsJson":"0x4416b328",
                "PHPUnit\\Framework\\Constraint\\IsNan":"0x4416b348",
                "PHPUnit\\Framework\\Constraint\\IsNull":"0x4416b368",
                "PHPUnit\\Framework\\Constraint\\IsReadable":"0x4416b388",
                "PHPUnit\\Framework\\Constraint\\IsTrue":"0x4416b3a8",
                "PHPUnit\\Framework\\Constraint\\IsType":"0x4416b3c8",
                "PHPUnit\\Framework\\Constraint\\IsWritable":"0x4416b3e8",
                "PHPUnit\\Framework\\Constraint\\JsonMatches":"0x4416b408",
                "PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider":"0x4416b428",
                "PHPUnit\\Framework\\Constraint\\LessThan":"0x4416b448",
                "PHPUnit\\Framework\\Constraint\\LogicalAnd":"0x4416b468",
                "PHPUnit\\Framework\\Constraint\\LogicalNot":"0x4416b488",
                "PHPUnit\\Framework\\Constraint\\LogicalOr":"0x4416b4a8",
                "PHPUnit\\Framework\\Constraint\\LogicalXor":"0x4416b4c8",
                "PHPUnit\\Framework\\Constraint\\ObjectEquals":"0x4416b4e8",
                "PHPUnit\\Framework\\Constraint\\ObjectHasAttribute":"0x4416b508",
                "PHPUnit\\Framework\\Constraint\\Operator":"0x4416b528",
                "PHPUnit\\Framework\\Constraint\\RegularExpression":"0x4416b548",
                "PHPUnit\\Framework\\Constraint\\SameSize":"0x4416b568",
                "PHPUnit\\Framework\\Constraint\\StringContains":"0x4416b588",
                "PHPUnit\\Framework\\Constraint\\StringEndsWith":"0x4416b5a8",
                "PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription":"0x4416b5c8",
                "PHPUnit\\Framework\\Constraint\\StringStartsWith":"0x4416b5e8",
                "PHPUnit\\Framework\\Constraint\\TraversableContains":"0x4416b608",
                "PHPUnit\\Framework\\Constraint\\TraversableContainsEqual":"0x4416b628",
                "PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical":"0x4416b648",
                "PHPUnit\\Framework\\Constraint\\TraversableContainsOnly":"0x4416b668",
                "PHPUnit\\Framework\\Constraint\\UnaryOperator":"0x4416b688",
                "PHPUnit\\Framework\\CoveredCodeNotExecutedException":"0x4416b6a8",
                "PHPUnit\\Framework\\DataProviderTestSuite":"0x4416b6c8",
                "PHPUnit\\Framework\\Error":"0x4416b6e8",
                "PHPUnit\\Framework\\ErrorTestCase":"0x4416b708",
                "PHPUnit\\Framework\\Error\\Deprecated":"0x4416b728",
                "PHPUnit\\Framework\\Error\\Error":"0x4416b748",
                "PHPUnit\\Framework\\Error\\Notice":"0x4416b768",
                "PHPUnit\\Framework\\Error\\Warning":"0x4416b788",
                "PHPUnit\\Framework\\Exception":"0x4416b7a8",
                "PHPUnit\\Framework\\ExceptionWrapper":"0x4416b7c8",
                "PHPUnit\\Framework\\ExecutionOrderDependency":"0x4416b7e8",
                "PHPUnit\\Framework\\ExpectationFailedException":"0x4416b808",
                "PHPUnit\\Framework\\IncompleteTest":"0x4416b828",
                "PHPUnit\\Framework\\IncompleteTestCase":"0x4416b848",
                "PHPUnit\\Framework\\IncompleteTestError":"0x4416b868",
                "PHPUnit\\Framework\\InvalidArgumentException":"0x4416b888",
                "PHPUnit\\Framework\\InvalidCoversTargetException":"0x4416b8a8",
                "PHPUnit\\Framework\\InvalidDataProviderException":"0x4416b8c8",
                "PHPUnit\\Framework\\InvalidParameterGroupException":"0x4416b8e8",
                "PHPUnit\\Framework\\MissingCoversAnnotationException":"0x4416b908",
                "PHPUnit\\Framework\\MockObject\\Api":"0x4416b928",
                "PHPUnit\\Framework\\MockObject\\BadMethodCallException":"0x4416b948",
                "PHPUnit\\Framework\\MockObject\\Builder\\Identity":"0x4416b968",
                "PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker":"0x4416b988",
                "PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber":"0x4416b9a8",
                "PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch":"0x4416b9c8",
                "PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch":"0x4416b9e8",
                "PHPUnit\\Framework\\MockObject\\Builder\\Stub":"0x4416ba08",
                "PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException":"0x4416ba28",
                "PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException":"0x4416ba48",
                "PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException":"0x4416ba68",
                "PHPUnit\\Framework\\MockObject\\ClassIsFinalException":"0x4416ba88",
                "PHPUnit\\Framework\\MockObject\\ConfigurableMethod":"0x4416baa8",
                "PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException":"0x4416bac8",
                "PHPUnit\\Framework\\MockObject\\DuplicateMethodException":"0x4416bae8",
                "PHPUnit\\Framework\\MockObject\\Exception":"0x4416bb08",
                "PHPUnit\\Framework\\MockObject\\Generator":"0x4416bb28",
                "PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException":"0x4416bb48",
                "PHPUnit\\Framework\\MockObject\\InvalidMethodNameException":"0x4416bb68",
                "PHPUnit\\Framework\\MockObject\\Invocation":"0x4416bb88",
                "PHPUnit\\Framework\\MockObject\\InvocationHandler":"0x4416bba8",
                "PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException":"0x4416bbc8",
                "PHPUnit\\Framework\\MockObject\\Matcher":"0x4416bbe8",
                "PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException":"0x4416bc08",
                "PHPUnit\\Framework\\MockObject\\Method":"0x4416bc28",
                "PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException":"0x4416bc48",
                "PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException":"0x4416bc68",
                "PHPUnit\\Framework\\MockObject\\MethodNameConstraint":"0x4416bc88",
                "PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException":"0x4416bca8",
                "PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException":"0x4416bcc8",
                "PHPUnit\\Framework\\MockObject\\MockBuilder":"0x4416bce8",
                "PHPUnit\\Framework\\MockObject\\MockClass":"0x4416bd08",
                "PHPUnit\\Framework\\MockObject\\MockMethod":"0x4416bd28",
                "PHPUnit\\Framework\\MockObject\\MockMethodSet":"0x4416bd48",
                "PHPUnit\\Framework\\MockObject\\MockObject":"0x4416bd68",
                "PHPUnit\\Framework\\MockObject\\MockTrait":"0x4416bd88",
                "PHPUnit\\Framework\\MockObject\\MockType":"0x4416bda8",
                "PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException":"0x4416bdc8",
                "PHPUnit\\Framework\\MockObject\\ReflectionException":"0x4416bde8",
                "PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException":"0x4416be08",
                "PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount":"0x4416be28",
                "PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters":"0x4416be48",
                "PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters":"0x4416be68",
                "PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder":"0x4416be88",
                "PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtIndex":"0x4416bea8",
                "PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount":"0x4416bec8",
                "PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce":"0x4416bee8",
                "PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount":"0x4416bf08",
                "PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount":"0x4416bf28",
                "PHPUnit\\Framework\\MockObject\\Rule\\MethodName":"0x4416bf48",
                "PHPUnit\\Framework\\MockObject\\Rule\\Parameters":"0x4416bf68",
                "PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule":"0x4416bf88",
                "PHPUnit\\Framework\\MockObject\\RuntimeException":"0x4416bfa8",
                "PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException":"0x4416bfc8",
                "PHPUnit\\Framework\\MockObject\\Stub":"0x4416bfe8",
                "PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls":"0x4416c008",
                "PHPUnit\\Framework\\MockObject\\Stub\\Exception":"0x4416c028",
                "PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument":"0x4416c048",
                "PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback":"0x4416c068",
                "PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference":"0x4416c088",
                "PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf":"0x4416c0a8",
                "PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub":"0x4416c0c8",
                "PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap":"0x4416c0e8",
                "PHPUnit\\Framework\\MockObject\\Stub\\Stub":"0x4416c108",
                "PHPUnit\\Framework\\MockObject\\UnknownClassException":"0x4416c128",
                "PHPUnit\\Framework\\MockObject\\UnknownTraitException":"0x4416c148",
                "PHPUnit\\Framework\\MockObject\\UnknownTypeException":"0x4416c168",
                "PHPUnit\\Framework\\MockObject\\Verifiable":"0x4416c188",
                "PHPUnit\\Framework\\NoChildTestSuiteException":"0x4416c1a8",
                "PHPUnit\\Framework\\OutputError":"0x4416c1c8",
                "PHPUnit\\Framework\\PHPTAssertionFailedError":"0x4416c1e8",
                "PHPUnit\\Framework\\Reorderable":"0x4416c208",
                "PHPUnit\\Framework\\RiskyTestError":"0x4416c228",
                "PHPUnit\\Framework\\SelfDescribing":"0x4416c248",
                "PHPUnit\\Framework\\SkippedTest":"0x4416c268",
                "PHPUnit\\Framework\\SkippedTestCase":"0x4416c288",
                "PHPUnit\\Framework\\SkippedTestError":"0x4416c2a8",
                "PHPUnit\\Framework\\SkippedTestSuiteError":"0x4416c2c8",
                "PHPUnit\\Framework\\SyntheticError":"0x4416c2e8",
                "PHPUnit\\Framework\\SyntheticSkippedError":"0x4416c308",
                "PHPUnit\\Framework\\Test":"0x4416c328",
                "PHPUnit\\Framework\\TestBuilder":"0x4416c348",
                "PHPUnit\\Framework\\TestCase":"0x4416c368",
                "PHPUnit\\Framework\\TestFailure":"0x4416c388",
                "PHPUnit\\Framework\\TestListener":"0x4416c3a8",
                "PHPUnit\\Framework\\TestListenerDefaultImplementation":"0x4416c3c8",
                "PHPUnit\\Framework\\TestResult":"0x4416c3e8",
                "PHPUnit\\Framework\\TestSuite":"0x4416c408",
                "PHPUnit\\Framework\\TestSuiteIterator":"0x4416c428",
                "PHPUnit\\Framework\\UnintentionallyCoveredCodeError":"0x4416c448",
                "PHPUnit\\Framework\\Warning":"0x4416c468",
                "PHPUnit\\Framework\\WarningTestCase":"0x4416c488",
                "PHPUnit\\Runner\\AfterIncompleteTestHook":"0x4416c4a8",
                "PHPUnit\\Runner\\AfterLastTestHook":"0x4416c4c8",
                "PHPUnit\\Runner\\AfterRiskyTestHook":"0x4416c4e8",
                "PHPUnit\\Runner\\AfterSkippedTestHook":"0x4416c508",
                "PHPUnit\\Runner\\AfterSuccessfulTestHook":"0x4416c528",
                "PHPUnit\\Runner\\AfterTestErrorHook":"0x4416c548",
                "PHPUnit\\Runner\\AfterTestFailureHook":"0x4416c568",
                "PHPUnit\\Runner\\AfterTestHook":"0x4416c588",
                "PHPUnit\\Runner\\AfterTestWarningHook":"0x4416c5a8",
                "PHPUnit\\Runner\\BaseTestRunner":"0x4416c5c8",
                "PHPUnit\\Runner\\BeforeFirstTestHook":"0x4416c5e8",
                "PHPUnit\\Runner\\BeforeTestHook":"0x4416c608",
                "PHPUnit\\Runner\\DefaultTestResultCache":"0x4416c628",
                "PHPUnit\\Runner\\Exception":"0x4416c648",
                "PHPUnit\\Runner\\Extension\\ExtensionHandler":"0x4416c668",
                "PHPUnit\\Runner\\Extension\\PharLoader":"0x4416c688",
                "PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator":"0x4416c6a8",
                "PHPUnit\\Runner\\Filter\\Factory":"0x4416c6c8",
                "PHPUnit\\Runner\\Filter\\GroupFilterIterator":"0x4416c6e8",
                "PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator":"0x4416c708",
                "PHPUnit\\Runner\\Filter\\NameFilterIterator":"0x4416c728",
                "PHPUnit\\Runner\\Hook":"0x4416c748",
                "PHPUnit\\Runner\\NullTestResultCache":"0x4416c768",
                "PHPUnit\\Runner\\PhptTestCase":"0x4416c788",
                "PHPUnit\\Runner\\ResultCacheExtension":"0x4416c7a8",
                "PHPUnit\\Runner\\StandardTestSuiteLoader":"0x4416c7c8",
                "PHPUnit\\Runner\\TestHook":"0x4416c7e8",
                "PHPUnit\\Runner\\TestListenerAdapter":"0x4416c808",
                "PHPUnit\\Runner\\TestResultCache":"0x4416c828",
                "PHPUnit\\Runner\\TestSuiteLoader":"0x4416c848",
                "PHPUnit\\Runner\\TestSuiteSorter":"0x4416c868",
                "PHPUnit\\Runner\\Version":"0x4416c888",
                "PHPUnit\\TextUI\\CliArguments\\Builder":"0x4416c8a8",
                "PHPUnit\\TextUI\\CliArguments\\Configuration":"0x4416c8c8",
                "PHPUnit\\TextUI\\CliArguments\\Exception":"0x4416c8e8",
                "PHPUnit\\TextUI\\CliArguments\\Mapper":"0x4416c908",
                "PHPUnit\\TextUI\\Command":"0x4416c928",
                "PHPUnit\\TextUI\\DefaultResultPrinter":"0x4416c948",
                "PHPUnit\\TextUI\\Exception":"0x4416c968",
                "PHPUnit\\TextUI\\Help":"0x4416c988",
                "PHPUnit\\TextUI\\ReflectionException":"0x4416c9a8",
                "PHPUnit\\TextUI\\ResultPrinter":"0x4416c9c8",
                "PHPUnit\\TextUI\\RuntimeException":"0x4416c9e8",
                "PHPUnit\\TextUI\\TestDirectoryNotFoundException":"0x4416ca08",
                "PHPUnit\\TextUI\\TestFileNotFoundException":"0x4416ca28",
                "PHPUnit\\TextUI\\TestRunner":"0x4416ca48",
                "PHPUnit\\TextUI\\TestSuiteMapper":"0x4416ca68",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage":"0x4416ca88",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper":"0x4416caa8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory":"0x4416cac8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection":"0x4416cae8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator":"0x4416cb08",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover":"0x4416cb28",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura":"0x4416cb48",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j":"0x4416cb68",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html":"0x4416cb88",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php":"0x4416cba8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text":"0x4416cbc8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml":"0x4416cbe8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Configuration":"0x4416cc08",
                "PHPUnit\\TextUI\\XmlConfiguration\\Constant":"0x4416cc28",
                "PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection":"0x4416cc48",
                "PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator":"0x4416cc68",
                "PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes":"0x4416cc88",
                "PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport":"0x4416cca8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport":"0x4416ccc8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport":"0x4416cce8",
                "PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport":"0x4416cd08",
                "PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport":"0x4416cd28",
                "PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport":"0x4416cd48",
                "PHPUnit\\TextUI\\XmlConfiguration\\Directory":"0x4416cd68",
                "PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection":"0x4416cd88",
                "PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator":"0x4416cda8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Exception":"0x4416cdc8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Extension":"0x4416cde8",
                "PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection":"0x4416ce08",
                "PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator":"0x4416ce28",
                "PHPUnit\\TextUI\\XmlConfiguration\\File":"0x4416ce48",
                "PHPUnit\\TextUI\\XmlConfiguration\\FileCollection":"0x4416ce68",
                "PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator":"0x4416ce88",
                "PHPUnit\\TextUI\\XmlConfiguration\\Generator":"0x4416cea8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Group":"0x4416cec8",
                "PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection":"0x4416cee8",
                "PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator":"0x4416cf08",
                "PHPUnit\\TextUI\\XmlConfiguration\\Groups":"0x4416cf28",
                "PHPUnit\\TextUI\\XmlConfiguration\\IniSetting":"0x4416cf48",
                "PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection":"0x4416cf68",
                "PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator":"0x4416cf88",
                "PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement":"0x4416cfa8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Loader":"0x4416cfc8",
                "PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration":"0x4416cfe8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit":"0x4416d008",
                "PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging":"0x4416d028",
                "PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity":"0x4416d048",
                "PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html":"0x4416d068",
                "PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text":"0x4416d088",
                "PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml":"0x4416d0a8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text":"0x4416d0c8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Migration":"0x4416d0e8",
                "PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder":"0x4416d108",
                "PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException":"0x4416d128",
                "PHPUnit\\TextUI\\XmlConfiguration\\MigrationException":"0x4416d148",
                "PHPUnit\\TextUI\\XmlConfiguration\\Migrator":"0x4416d168",
                "PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage":"0x4416d188",
                "PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage":"0x4416d1a8",
                "PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage":"0x4416d1c8",
                "PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage":"0x4416d1e8",
                "PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit":"0x4416d208",
                "PHPUnit\\TextUI\\XmlConfiguration\\Php":"0x4416d228",
                "PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler":"0x4416d248",
                "PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute":"0x4416d268",
                "PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter":"0x4416d288",
                "PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes":"0x4416d2a8",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory":"0x4416d2c8",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection":"0x4416d2e8",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator":"0x4416d308",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestFile":"0x4416d328",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection":"0x4416d348",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator":"0x4416d368",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestSuite":"0x4416d388",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection":"0x4416d3a8",
                "PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator":"0x4416d3c8",
                "PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93":"0x4416d3e8",
                "PHPUnit\\TextUI\\XmlConfiguration\\Variable":"0x4416d408",
                "PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection":"0x4416d428",
                "PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator":"0x4416d448",
                "PHPUnit\\Util\\Annotation\\DocBlock":"0x4416d468",
                "PHPUnit\\Util\\Annotation\\Registry":"0x4416d488",
                "PHPUnit\\Util\\Blacklist":"0x4416d4a8",
                "PHPUnit\\Util\\Color":"0x4416d4c8",
                "PHPUnit\\Util\\ErrorHandler":"0x4416d4e8",
                "PHPUnit\\Util\\Exception":"0x4416d508",
                "PHPUnit\\Util\\ExcludeList":"0x4416d528",
                "PHPUnit\\Util\\FileLoader":"0x4416d548",
                "PHPUnit\\Util\\Filesystem":"0x4416d568",
                "PHPUnit\\Util\\Filter":"0x4416d588",
                "PHPUnit\\Util\\GlobalState":"0x4416d5a8",
                "PHPUnit\\Util\\InvalidDataSetException":"0x4416d5c8",
                "PHPUnit\\Util\\Json":"0x4416d5e8",
                "PHPUnit\\Util\\Log\\JUnit":"0x4416d608",
                "PHPUnit\\Util\\Log\\TeamCity":"0x4416d628",
                "PHPUnit\\Util\\PHP\\AbstractPhpProcess":"0x4416d648",
                "PHPUnit\\Util\\PHP\\DefaultPhpProcess":"0x4416d668",
                "PHPUnit\\Util\\PHP\\WindowsPhpProcess":"0x4416d688",
                "PHPUnit\\Util\\Printer":"0x4416d6a8",
                "PHPUnit\\Util\\Reflection":"0x4416d6c8",
                "PHPUnit\\Util\\RegularExpression":"0x4416d6e8",
                "PHPUnit\\Util\\Test":"0x4416d708",
                "PHPUnit\\Util\\TestDox\\CliTestDoxPrinter":"0x4416d728",
                "PHPUnit\\Util\\TestDox\\HtmlResultPrinter":"0x4416d748",
                "PHPUnit\\Util\\TestDox\\NamePrettifier":"0x4416d768",
                "PHPUnit\\Util\\TestDox\\ResultPrinter":"0x4416d788",
                "PHPUnit\\Util\\TestDox\\TestDoxPrinter":"0x4416d7a8",
                "PHPUnit\\Util\\TestDox\\TextResultPrinter":"0x4416d7c8",
                "PHPUnit\\Util\\TestDox\\XmlResultPrinter":"0x4416d7e8",
                "PHPUnit\\Util\\TextTestListRenderer":"0x4416d808",
                "PHPUnit\\Util\\Type":"0x4416d828",
                "PHPUnit\\Util\\VersionComparisonOperator":"0x4416d848",
                "PHPUnit\\Util\\XdebugFilterScriptGenerator":"0x4416d868",
                "PHPUnit\\Util\\Xml":"0x4416d888",
                "PHPUnit\\Util\\XmlTestListRenderer":"0x4416d8a8",
                "PHPUnit\\Util\\Xml\\Exception":"0x4416d8c8",
                "PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult":"0x4416d8e8",
                "PHPUnit\\Util\\Xml\\Loader":"0x4416d908",
                "PHPUnit\\Util\\Xml\\SchemaDetectionResult":"0x4416d928",
                "PHPUnit\\Util\\Xml\\SchemaDetector":"0x4416d948",
                "PHPUnit\\Util\\Xml\\SchemaFinder":"0x4416d968",
                "PHPUnit\\Util\\Xml\\SnapshotNodeList":"0x4416d988",
                "PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult":"0x4416d9a8",
                "PHPUnit\\Util\\Xml\\ValidationResult":"0x4416d9c8",
                "PHPUnit\\Util\\Xml\\Validator":"0x4416d9e8",
                "PharIo\\Manifest\\Application":"0x4416da08",
                "PharIo\\Manifest\\ApplicationName":"0x4416da28",
                "PharIo\\Manifest\\Author":"0x4416da48",
                "PharIo\\Manifest\\AuthorCollection":"0x4416da68",
                "PharIo\\Manifest\\AuthorCollectionIterator":"0x4416da88",
                "PharIo\\Manifest\\AuthorElement":"0x4416daa8",
                "PharIo\\Manifest\\AuthorElementCollection":"0x4416dac8",
                "PharIo\\Manifest\\BundledComponent":"0x4416dae8",
                "PharIo\\Manifest\\BundledComponentCollection":"0x4416db08",
                "PharIo\\Manifest\\BundledComponentCollectionIterator":"0x4416db28",
                "PharIo\\Manifest\\BundlesElement":"0x4416db48",
                "PharIo\\Manifest\\ComponentElement":"0x4416db68",
                "PharIo\\Manifest\\ComponentElementCollection":"0x4416db88",
                "PharIo\\Manifest\\ContainsElement":"0x4416dba8",
                "PharIo\\Manifest\\CopyrightElement":"0x4416dbc8",
                "PharIo\\Manifest\\CopyrightInformation":"0x4416dbe8",
                "PharIo\\Manifest\\ElementCollection":"0x4416dc08",
                "PharIo\\Manifest\\ElementCollectionException":"0x4416dc28",
                "PharIo\\Manifest\\Email":"0x4416dc48",
                "PharIo\\Manifest\\Exception":"0x4416dc68",
                "PharIo\\Manifest\\ExtElement":"0x4416dc88",
                "PharIo\\Manifest\\ExtElementCollection":"0x4416dca8",
                "PharIo\\Manifest\\Extension":"0x4416dcc8",
                "PharIo\\Manifest\\ExtensionElement":"0x4416dce8",
                "PharIo\\Manifest\\InvalidApplicationNameException":"0x4416dd08",
                "PharIo\\Manifest\\InvalidEmailException":"0x4416dd28",
                "PharIo\\Manifest\\InvalidUrlException":"0x4416dd48",
                "PharIo\\Manifest\\Library":"0x4416dd68",
                "PharIo\\Manifest\\License":"0x4416dd88",
                "PharIo\\Manifest\\LicenseElement":"0x4416dda8",
                "PharIo\\Manifest\\Manifest":"0x4416ddc8",
                "PharIo\\Manifest\\ManifestDocument":"0x4416dde8",
                "PharIo\\Manifest\\ManifestDocumentException":"0x4416de08",
                "PharIo\\Manifest\\ManifestDocumentLoadingException":"0x4416de28",
                "PharIo\\Manifest\\ManifestDocumentMapper":"0x4416de48",
                "PharIo\\Manifest\\ManifestDocumentMapperException":"0x4416de68",
                "PharIo\\Manifest\\ManifestElement":"0x4416de88",
                "PharIo\\Manifest\\ManifestElementException":"0x4416dea8",
                "PharIo\\Manifest\\ManifestLoader":"0x4416dec8",
                "PharIo\\Manifest\\ManifestLoaderException":"0x4416dee8",
                "PharIo\\Manifest\\ManifestSerializer":"0x4416df08",
                "PharIo\\Manifest\\PhpElement":"0x4416df28",
                "PharIo\\Manifest\\PhpExtensionRequirement":"0x4416df48",
                "PharIo\\Manifest\\PhpVersionRequirement":"0x4416df68",
                "PharIo\\Manifest\\Requirement":"0x4416df88",
                "PharIo\\Manifest\\RequirementCollection":"0x4416dfa8",
                "PharIo\\Manifest\\RequirementCollectionIterator":"0x4416dfc8",
                "PharIo\\Manifest\\RequiresElement":"0x4416dfe8",
                "PharIo\\Manifest\\Type":"0x4416e008",
                "PharIo\\Manifest\\Url":"0x4416e028",
                "PharIo\\Version\\AbstractVersionConstraint":"0x4416e048",
                "PharIo\\Version\\AndVersionConstraintGroup":"0x4416e068",
                "PharIo\\Version\\AnyVersionConstraint":"0x4416e088",
                "PharIo\\Version\\BuildMetaData":"0x4416e0a8",
                "PharIo\\Version\\ExactVersionConstraint":"0x4416e0c8",
                "PharIo\\Version\\Exception":"0x4416e0e8",
                "PharIo\\Version\\GreaterThanOrEqualToVersionConstraint":"0x4416e108",
                "PharIo\\Version\\InvalidPreReleaseSuffixException":"0x4416e128",
                "PharIo\\Version\\InvalidVersionException":"0x4416e148",
                "PharIo\\Version\\NoBuildMetaDataException":"0x4416e168",
                "PharIo\\Version\\NoPreReleaseSuffixException":"0x4416e188",
                "PharIo\\Version\\OrVersionConstraintGroup":"0x4416e1a8",
                "PharIo\\Version\\PreReleaseSuffix":"0x4416e1c8",
                "PharIo\\Version\\SpecificMajorAndMinorVersionConstraint":"0x4416e1e8",
                "PharIo\\Version\\SpecificMajorVersionConstraint":"0x4416e208",
                "PharIo\\Version\\UnsupportedVersionConstraintException":"0x4416e228",
                "PharIo\\Version\\Version":"0x4416e248",
                "PharIo\\Version\\VersionConstraint":"0x4416e268",
                "PharIo\\Version\\VersionConstraintParser":"0x4416e288",
                "PharIo\\Version\\VersionConstraintValue":"0x4416e2a8",
                "PharIo\\Version\\VersionNumber":"0x4416e2c8",
                "PhpCsFixer\\Diff\\Chunk":"0x4416e2e8",
                "PhpCsFixer\\Diff\\ConfigurationException":"0x4416e308",
                "PhpCsFixer\\Diff\\Diff":"0x4416e328",
                "PhpCsFixer\\Diff\\Differ":"0x4416e348",
                "PhpCsFixer\\Diff\\Exception":"0x4416e368",
                "PhpCsFixer\\Diff\\InvalidArgumentException":"0x4416e388",
                "PhpCsFixer\\Diff\\Line":"0x4416e3a8",
                "PhpCsFixer\\Diff\\LongestCommonSubsequenceCalculator":"0x4416e3c8",
                "PhpCsFixer\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator":"0x4416e3e8",
                "PhpCsFixer\\Diff\\Output\\AbstractChunkOutputBuilder":"0x4416e408",
                "PhpCsFixer\\Diff\\Output\\DiffOnlyOutputBuilder":"0x4416e428",
                "PhpCsFixer\\Diff\\Output\\DiffOutputBuilderInterface":"0x4416e448",
                "PhpCsFixer\\Diff\\Output\\StrictUnifiedDiffOutputBuilder":"0x4416e468",
                "PhpCsFixer\\Diff\\Output\\UnifiedDiffOutputBuilder":"0x4416e488",
                "PhpCsFixer\\Diff\\Parser":"0x4416e4a8",
                "PhpCsFixer\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator":"0x4416e4c8",
                "PhpToken":"0x4416e4e8",
                "ReturnTypeWillChange":"0x4416e508",
                "SebastianBergmann\\CliParser\\AmbiguousOptionException":"0x4416e528",
                "SebastianBergmann\\CliParser\\Exception":"0x4416e548",
                "SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException":"0x4416e568",
                "SebastianBergmann\\CliParser\\Parser":"0x4416e588",
                "SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException":"0x4416e5a8",
                "SebastianBergmann\\CliParser\\UnknownOptionException":"0x4416e5c8",
                "SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException":"0x4416e5e8",
                "SebastianBergmann\\CodeCoverage\\CodeCoverage":"0x4416e608",
                "SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException":"0x4416e628",
                "SebastianBergmann\\CodeCoverage\\Driver\\Driver":"0x4416e648",
                "SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException":"0x4416e668",
                "SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver":"0x4416e688",
                "SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException":"0x4416e6a8",
                "SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgDriver":"0x4416e6c8",
                "SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgNotAvailableException":"0x4416e6e8",
                "SebastianBergmann\\CodeCoverage\\Driver\\Selector":"0x4416e708",
                "SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException":"0x4416e728",
                "SebastianBergmann\\CodeCoverage\\Driver\\WrongXdebugVersionException":"0x4416e748",
                "SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2Driver":"0x4416e768",
                "SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2NotEnabledException":"0x4416e788",
                "SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3Driver":"0x4416e7a8",
                "SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3NotEnabledException":"0x4416e7c8",
                "SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException":"0x4416e7e8",
                "SebastianBergmann\\CodeCoverage\\Exception":"0x4416e808",
                "SebastianBergmann\\CodeCoverage\\Filter":"0x4416e828",
                "SebastianBergmann\\CodeCoverage\\InvalidArgumentException":"0x4416e848",
                "SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException":"0x4416e868",
                "SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException":"0x4416e888",
                "SebastianBergmann\\CodeCoverage\\Node\\AbstractNode":"0x4416e8a8",
                "SebastianBergmann\\CodeCoverage\\Node\\Builder":"0x4416e8c8",
                "SebastianBergmann\\CodeCoverage\\Node\\CrapIndex":"0x4416e8e8",
                "SebastianBergmann\\CodeCoverage\\Node\\Directory":"0x4416e908",
                "SebastianBergmann\\CodeCoverage\\Node\\File":"0x4416e928",
                "SebastianBergmann\\CodeCoverage\\Node\\Iterator":"0x4416e948",
                "SebastianBergmann\\CodeCoverage\\ParserException":"0x4416e968",
                "SebastianBergmann\\CodeCoverage\\ProcessedCodeCoverageData":"0x4416e988",
                "SebastianBergmann\\CodeCoverage\\RawCodeCoverageData":"0x4416e9a8",
                "SebastianBergmann\\CodeCoverage\\ReflectionException":"0x4416e9c8",
                "SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException":"0x4416e9e8",
                "SebastianBergmann\\CodeCoverage\\Report\\Clover":"0x4416ea08",
                "SebastianBergmann\\CodeCoverage\\Report\\Cobertura":"0x4416ea28",
                "SebastianBergmann\\CodeCoverage\\Report\\Crap4j":"0x4416ea48",
                "SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard":"0x4416ea68",
                "SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory":"0x4416ea88",
                "SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade":"0x4416eaa8",
                "SebastianBergmann\\CodeCoverage\\Report\\Html\\File":"0x4416eac8",
                "SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer":"0x4416eae8",
                "SebastianBergmann\\CodeCoverage\\Report\\PHP":"0x4416eb08",
                "SebastianBergmann\\CodeCoverage\\Report\\Text":"0x4416eb28",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation":"0x4416eb48",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage":"0x4416eb68",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory":"0x4416eb88",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade":"0x4416eba8",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\File":"0x4416ebc8",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method":"0x4416ebe8",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node":"0x4416ec08",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project":"0x4416ec28",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report":"0x4416ec48",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source":"0x4416ec68",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests":"0x4416ec88",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals":"0x4416eca8",
                "SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit":"0x4416ecc8",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException":"0x4416ece8",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer":"0x4416ed08",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser":"0x4416ed28",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor":"0x4416ed48",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor":"0x4416ed68",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser":"0x4416ed88",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor":"0x4416eda8",
                "SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser":"0x4416edc8",
                "SebastianBergmann\\CodeCoverage\\TestIdMissingException":"0x4416ede8",
                "SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException":"0x4416ee08",
                "SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException":"0x4416ee28",
                "SebastianBergmann\\CodeCoverage\\Util\\Filesystem":"0x4416ee48",
                "SebastianBergmann\\CodeCoverage\\Util\\Percentage":"0x4416ee68",
                "SebastianBergmann\\CodeCoverage\\Version":"0x4416ee88",
                "SebastianBergmann\\CodeCoverage\\XmlException":"0x4416eea8",
                "SebastianBergmann\\CodeUnitReverseLookup\\Wizard":"0x4416eec8",
                "SebastianBergmann\\CodeUnit\\ClassMethodUnit":"0x4416eee8",
                "SebastianBergmann\\CodeUnit\\ClassUnit":"0x4416ef08",
                "SebastianBergmann\\CodeUnit\\CodeUnit":"0x4416ef28",
                "SebastianBergmann\\CodeUnit\\CodeUnitCollection":"0x4416ef48",
                "SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator":"0x4416ef68",
                "SebastianBergmann\\CodeUnit\\Exception":"0x4416ef88",
                "SebastianBergmann\\CodeUnit\\FunctionUnit":"0x4416efa8",
                "SebastianBergmann\\CodeUnit\\InterfaceMethodUnit":"0x4416efc8",
                "SebastianBergmann\\CodeUnit\\InterfaceUnit":"0x4416efe8",
                "SebastianBergmann\\CodeUnit\\InvalidCodeUnitException":"0x4416f008",
                "SebastianBergmann\\CodeUnit\\Mapper":"0x4416f028",
                "SebastianBergmann\\CodeUnit\\NoTraitException":"0x4416f048",
                "SebastianBergmann\\CodeUnit\\ReflectionException":"0x4416f068",
                "SebastianBergmann\\CodeUnit\\TraitMethodUnit":"0x4416f088",
                "SebastianBergmann\\CodeUnit\\TraitUnit":"0x4416f0a8",
                "SebastianBergmann\\Comparator\\ArrayComparator":"0x4416f0c8",
                "SebastianBergmann\\Comparator\\Comparator":"0x4416f0e8",
                "SebastianBergmann\\Comparator\\ComparisonFailure":"0x4416f108",
                "SebastianBergmann\\Comparator\\DOMNodeComparator":"0x4416f128",
                "SebastianBergmann\\Comparator\\DateTimeComparator":"0x4416f148",
                "SebastianBergmann\\Comparator\\DoubleComparator":"0x4416f168",
                "SebastianBergmann\\Comparator\\Exception":"0x4416f188",
                "SebastianBergmann\\Comparator\\ExceptionComparator":"0x4416f1a8",
                "SebastianBergmann\\Comparator\\Factory":"0x4416f1c8",
                "SebastianBergmann\\Comparator\\MockObjectComparator":"0x4416f1e8",
                "SebastianBergmann\\Comparator\\NumericComparator":"0x4416f208",
                "SebastianBergmann\\Comparator\\ObjectComparator":"0x4416f228",
                "SebastianBergmann\\Comparator\\ResourceComparator":"0x4416f248",
                "SebastianBergmann\\Comparator\\RuntimeException":"0x4416f268",
                "SebastianBergmann\\Comparator\\ScalarComparator":"0x4416f288",
                "SebastianBergmann\\Comparator\\SplObjectStorageComparator":"0x4416f2a8",
                "SebastianBergmann\\Comparator\\TypeComparator":"0x4416f2c8",
                "SebastianBergmann\\Complexity\\Calculator":"0x4416f2e8",
                "SebastianBergmann\\Complexity\\Complexity":"0x4416f308",
                "SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor":"0x4416f328",
                "SebastianBergmann\\Complexity\\ComplexityCollection":"0x4416f348",
                "SebastianBergmann\\Complexity\\ComplexityCollectionIterator":"0x4416f368",
                "SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor":"0x4416f388",
                "SebastianBergmann\\Complexity\\Exception":"0x4416f3a8",
                "SebastianBergmann\\Complexity\\RuntimeException":"0x4416f3c8",
                "SebastianBergmann\\Diff\\Chunk":"0x4416f3e8",
                "SebastianBergmann\\Diff\\ConfigurationException":"0x4416f408",
                "SebastianBergmann\\Diff\\Diff":"0x4416f428",
                "SebastianBergmann\\Diff\\Differ":"0x4416f448",
                "SebastianBergmann\\Diff\\Exception":"0x4416f468",
                "SebastianBergmann\\Diff\\InvalidArgumentException":"0x4416f488",
                "SebastianBergmann\\Diff\\Line":"0x4416f4a8",
                "SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator":"0x4416f4c8",
                "SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator":"0x4416f4e8",
                "SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder":"0x4416f508",
                "SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder":"0x4416f528",
                "SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface":"0x4416f548",
                "SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder":"0x4416f568",
                "SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder":"0x4416f588",
                "SebastianBergmann\\Diff\\Parser":"0x4416f5a8",
                "SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator":"0x4416f5c8",
                "SebastianBergmann\\Environment\\Console":"0x4416f5e8",
                "SebastianBergmann\\Environment\\OperatingSystem":"0x4416f608",
                "SebastianBergmann\\Environment\\Runtime":"0x4416f628",
                "SebastianBergmann\\Exporter\\Exporter":"0x4416f648",
                "SebastianBergmann\\FileIterator\\Facade":"0x4416f668",
                "SebastianBergmann\\FileIterator\\Factory":"0x4416f688",
                "SebastianBergmann\\FileIterator\\Iterator":"0x4416f6a8",
                "SebastianBergmann\\GlobalState\\CodeExporter":"0x4416f6c8",
                "SebastianBergmann\\GlobalState\\Exception":"0x4416f6e8",
                "SebastianBergmann\\GlobalState\\ExcludeList":"0x4416f708",
                "SebastianBergmann\\GlobalState\\Restorer":"0x4416f728",
                "SebastianBergmann\\GlobalState\\RuntimeException":"0x4416f748",
                "SebastianBergmann\\GlobalState\\Snapshot":"0x4416f768",
                "SebastianBergmann\\Invoker\\Exception":"0x4416f788",
                "SebastianBergmann\\Invoker\\Invoker":"0x4416f7a8",
                "SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException":"0x4416f7c8",
                "SebastianBergmann\\Invoker\\TimeoutException":"0x4416f7e8",
                "SebastianBergmann\\LinesOfCode\\Counter":"0x4416f808",
                "SebastianBergmann\\LinesOfCode\\Exception":"0x4416f828",
                "SebastianBergmann\\LinesOfCode\\IllogicalValuesException":"0x4416f848",
                "SebastianBergmann\\LinesOfCode\\LineCountingVisitor":"0x4416f868",
                "SebastianBergmann\\LinesOfCode\\LinesOfCode":"0x4416f888",
                "SebastianBergmann\\LinesOfCode\\NegativeValueException":"0x4416f8a8",
                "SebastianBergmann\\LinesOfCode\\RuntimeException":"0x4416f8c8",
                "SebastianBergmann\\ObjectEnumerator\\Enumerator":"0x4416f8e8",
                "SebastianBergmann\\ObjectEnumerator\\Exception":"0x4416f908",
                "SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException":"0x4416f928",
                "SebastianBergmann\\ObjectReflector\\Exception":"0x4416f948",
                "SebastianBergmann\\ObjectReflector\\InvalidArgumentException":"0x4416f968",
                "SebastianBergmann\\ObjectReflector\\ObjectReflector":"0x4416f988",
                "SebastianBergmann\\RecursionContext\\Context":"0x4416f9a8",
                "SebastianBergmann\\RecursionContext\\Exception":"0x4416f9c8",
                "SebastianBergmann\\RecursionContext\\InvalidArgumentException":"0x4416f9e8",
                "SebastianBergmann\\ResourceOperations\\ResourceOperations":"0x4416fa08",
                "SebastianBergmann\\Template\\Exception":"0x4416fa28",
                "SebastianBergmann\\Template\\InvalidArgumentException":"0x4416fa48",
                "SebastianBergmann\\Template\\RuntimeException":"0x4416fa68",
                "SebastianBergmann\\Template\\Template":"0x4416fa88",
                "SebastianBergmann\\Timer\\Duration":"0x4416faa8",
                "SebastianBergmann\\Timer\\Exception":"0x4416fac8",
                "SebastianBergmann\\Timer\\NoActiveTimerException":"0x4416fae8",
                "SebastianBergmann\\Timer\\ResourceUsageFormatter":"0x4416fb08",
                "SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException":"0x4416fb28",
                "SebastianBergmann\\Timer\\Timer":"0x4416fb48",
                "SebastianBergmann\\Type\\CallableType":"0x4416fb68",
                "SebastianBergmann\\Type\\Exception":"0x4416fb88",
                "SebastianBergmann\\Type\\FalseType":"0x4416fba8",
                "SebastianBergmann\\Type\\GenericObjectType":"0x4416fbc8",
                "SebastianBergmann\\Type\\IntersectionType":"0x4416fbe8",
                "SebastianBergmann\\Type\\IterableType":"0x4416fc08",
                "SebastianBergmann\\Type\\MixedType":"0x4416fc28",
                "SebastianBergmann\\Type\\NeverType":"0x4416fc48",
                "SebastianBergmann\\Type\\NullType":"0x4416fc68",
                "SebastianBergmann\\Type\\ObjectType":"0x4416fc88",
                "SebastianBergmann\\Type\\ReflectionMapper":"0x4416fca8",
                "SebastianBergmann\\Type\\RuntimeException":"0x4416fcc8",
                "SebastianBergmann\\Type\\SimpleType":"0x4416fce8",
                "SebastianBergmann\\Type\\StaticType":"0x4416fd08",
                "SebastianBergmann\\Type\\Type":"0x4416fd28",
                "SebastianBergmann\\Type\\TypeName":"0x4416fd48",
                "SebastianBergmann\\Type\\UnionType":"0x4416fd68",
                "SebastianBergmann\\Type\\UnknownType":"0x4416fd88",
                "SebastianBergmann\\Type\\VoidType":"0x4416fda8",
                "SebastianBergmann\\Version":"0x4416fdc8",
                "Stringable":"0x4416fde8",
                "TheSeer\\Tokenizer\\Exception":"0x4416fe08",
                "TheSeer\\Tokenizer\\NamespaceUri":"0x4416fe28",
                "TheSeer\\Tokenizer\\NamespaceUriException":"0x4416fe48",
                "TheSeer\\Tokenizer\\Token":"0x4416fe68",
                "TheSeer\\Tokenizer\\TokenCollection":"0x4416fe88",
                "TheSeer\\Tokenizer\\TokenCollectionException":"0x4416fea8",
                "TheSeer\\Tokenizer\\Tokenizer":"0x4416fec8",
                "TheSeer\\Tokenizer\\XMLSerializer":"0x4416fee8",
                "UnhandledMatchError":"0x4416ff08",
                "ValueError":"0x4416ff28",
                "©":"0x4416ff48"
            }
    

    The error message from Symfony is copied from PHP, and the line number is not indicated. Fortunately, one can find lines with such characters like this:

    grep -axv '.*' memdump-*

    After replacing them, you end up with a usable file.

    Hopefully this can be helpful to troubleshoot this instance of the issue:

    bin/analyzer ref-path -v 0x4416ff48 ~/workspace/dev-workspace/www/ms.search.manomano.com/memdump-100001.json
    Found 3 paths
    Path from 0x7f94f5318900
    +----------------+
    | Id: 0x4416ff48 |
    | Type: string   |
    | Size: 77 B     |
    | Is root: No    |
    +----------------+
             ^
             |
             ©
             |
             |
    +---------------------------------------------------------------------------------------------+
    | Id: 0x7f94f5318900                                                                          |
    | Type: array                                                                                 |
    | Size: 72 B                                                                                  |
    | Is root: Yes                                                                                |
    | Execution Frame: <CLASS_STATIC_MEMBER>                                                      |
    | Symbol Name: Composer\Autoload\ComposerStaticInit84a14a7ab6bb1d4a48fe5481b265a94d::classMap |
    | Children count: 685                                                                         |
    +---------------------------------------------------------------------------------------------+
    Path from 0x7f94f5289380
    +----------------+
    | Id: 0x4416ff48 |
    | Type: string   |
    | Size: 77 B     |
    | Is root: No    |
    +----------------+
             ^
             |
             c
             |
             |
    +---------------------+
    | Id: 0x7f94f5289418  |
    | Type: array         |
    | Size: 72 B          |
    | Is root: No         |
    | Children count: 685 |
    +---------------------+
             ^
             |
          classMap
             |
             |
    +-----------------------------------------------------------------------------+
    | Id: 0x7f94f5289380                                                          |
    | Type: object                                                                |
    | Class: Composer\Autoload\ClassLoader                                        |
    | Object Handle: 1                                                            |
    | Size: 72 B                                                                  |
    | Is root: Yes                                                                |
    | Execution Frame: <CLASS_STATIC_MEMBER>                                      |
    | Symbol Name: ComposerAutoloaderInit84a14a7ab6bb1d4a48fe5481b265a94d::loader |
    | Children count: 11                                                          |
    +-----------------------------------------------------------------------------+
    Path from 0x7f94f5264040
    +----------------+
    | Id: 0x4416ff48 |
    | Type: string   |
    | Size: 77 B     |
    | Is root: No    |
    +----------------+
             ^
             |
             c
             |
             |
    +---------------------+
    | Id: 0x7f94f5289418  |
    | Type: array         |
    | Size: 72 B          |
    | Is root: No         |
    | Children count: 685 |
    +---------------------+
             ^
             |
          classMap
             |
             |
    +-----------------------------------------------------------------------------+
    | Id: 0x7f94f5289380                                                          |
    | Type: object                                                                |
    | Class: Composer\Autoload\ClassLoader                                        |
    | Object Handle: 1                                                            |
    | Size: 72 B                                                                  |
    | Is root: Yes                                                                |
    | Execution Frame: <CLASS_STATIC_MEMBER>                                      |
    | Symbol Name: ComposerAutoloaderInit84a14a7ab6bb1d4a48fe5481b265a94d::loader |
    | Children count: 11                                                          |
    +-----------------------------------------------------------------------------+
             ^
             |
        /app/vendor
             |
             |
    +---------------------------------------------------------------+
    | Id: 0x7f94f5264040                                            |
    | Type: array                                                   |
    | Size: 72 B                                                    |
    | Is root: Yes                                                  |
    | Execution Frame: <CLASS_STATIC_MEMBER>                        |
    | Symbol Name: Composer\Autoload\ClassLoader::registeredLoaders |
    | Children count: 1                                             |
    

    You will note that © occurs here, that's because there is another occurrence of that character in the file, but for some reason it does not cause issues this time.

    @BitOne if you read this, I hope you're well :)

    opened by greg0ire 1
  • Implement auto dump on out-of-memory

    Implement auto dump on out-of-memory

    Two new INI settings have been added called meminfo.dump_on_limit and meminfo.dump_dir. When dump_on_limit is enabled, meminfo will attempt to create a heap dump when an OOM error is detected in the dump_dir directory.

    OOM errors are detected by registering an error handler, then checking for a prefix of "Allowed memory size of" on the error message.

    • [ ] Different default dump_dir on windows?

    resolves #122

    opened by tortis 1
  • [Feature request] Allow to automatically create a dump on memory limit

    [Feature request] Allow to automatically create a dump on memory limit

    I sometimes use the php-memory-profiler with your library to debug memory usage of my projects.

    This extension has a nice feature that allows to automatically dump a memory profile when the process crash because of a memory limit.

    It could be cool to have this feature for this extension.

    opened by jdecool 4
  • Add stdclass-shapes command

    Add stdclass-shapes command

    Add a command which compiles summary statistics on stdClass objects according to their properties.

    It's fine if you don't want this. It's just something I needed today, so I thought I may as well submit it upstream.

    opened by tstarling 1
Releases(v1.1.1)
Owner
Benoit Jacquemont
Akeneo co-founder and CTO
Benoit Jacquemont
zend-memory manages data in an environment with limited memory

Memory objects (memory containers) are generated by the memory manager, and transparently swapped/loaded when required.

Zend Framework 16 Aug 29, 2020
the repository uses some of the code from php-meminfo to simplify integration

the repository uses some of the code from php-meminfo to simplify integration

Dmitriy Bulgar 1 Nov 18, 2021
📈 Get insights about your Laravel or Lumen Project

Laravel Stats Get insights about your Laravel or Lumen Project. Installing The easiest way to install the package is by using composer. The package re

Stefan Zweifel 1.6k Dec 30, 2022
It's MX Player API gives All Content in JSON format

?? MXPlayer API ?? ?? MXPlayer API Can get Streaming URLs and Other Data in JSON Format From mxplayer.in links for Streaming ?? How to Use : ?? Method

Techie Sneh 8 Nov 30, 2021
Michael Pratt 307 Dec 23, 2022
Minimalist PHP frame for Core-Library, for Developing PHP application that gives you the full control of your application.

LazyPHP lightweight Pre-Made Frame for Core-library Install Run the below command in your terminal $ composer create-project ryzen/lazyphp my-first-pr

Ry-Zen 7 Aug 21, 2022
Core - ownCloud gives you freedom and control over your own data.

ownCloud Core ownCloud gives you freedom and control over your own data. A personal cloud which runs on your own server. Why is this so awesome? ?? Ac

ownCloud 7.9k Jan 4, 2023
Moodle ReactJS - gives you ability to use ReactJS inside any moodle page.

moodle-local_reactjs Moodle ReactJS - gives you ability to use ReactJS inside any moodle page. Note for devs: You'll need to set up npm dependencies d

SmartApp 5 Dec 14, 2022
Get the system resources in PHP, as memory, number of CPU'S, Temperature of CPU or GPU, Operating System, Hard Disk usage, .... Works in Windows & Linux

system-resources. A class to get the hardware resources We can get CPU load, CPU/GPU temperature, free/used memory & Hard disk. Written in PHP It is a

Rafael Martin Soto 10 Oct 15, 2022
This PHP script optimizes the speed of your RAM memory

██████╗░██╗░░██╗██████╗░░█████╗░██╗░░░░░███████╗░█████╗░███╗░░██╗███████╗██████╗░ ██╔══██╗██║░░██║██╔══██╗██╔══██╗██║░░░░░██╔════╝██╔══██╗████╗░██║██╔

Érik Freitas 7 Feb 12, 2022
Ip2region is a offline IP location library with accuracy rate of 99.9% and 0.0x millseconds searching performance. DB file is ONLY a few megabytes with all IP address stored. binding for Java,PHP,C,Python,Nodejs,Golang,C#,lua. Binary,B-tree,Memory searching algorithm

Ip2region是什么? ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法。 Ip2region特性

Lion 12.6k Dec 30, 2022
An autoscaling Bloom filter with ultra-low memory footprint for PHP

Ok Bloomer An autoscaling Bloom filter with ultra-low memory footprint for PHP. Ok Bloomer employs a novel layered filtering strategy that allows it t

Andrew DalPino 2 Sep 20, 2022
PHP library for Disque, an in-memory, distributed job queue

disque-php A PHP library for the very promising disque distributed job queue. Features: Support for both PHP (5.5+) and HHVM No dependencies: Fast con

Mariano Iglesias 132 Oct 19, 2022
High-performance, low-memory-footprint, single-file embedded database for key/value storage

LDBA - a fast, pure PHP, key-value database. Information LDBA is a high-performance, low-memory-footprint, single-file embedded database for key/value

Simplito 12 Nov 13, 2022
Prisma is an app that strengthens the relationship between people with memory loss and the people close to them

Prisma is an app that strengthens the relationship between people with memory loss and the people close to them. It does this by providing a living, collaborative digital photo album that can be populated with content of interest to these people.

Soulcenter 45 Dec 8, 2021
JsonCollectionParser - Event-based parser for large JSON collections (consumes small amount of memory)

Event-based parser for large JSON collections (consumes small amount of memory). Built on top of JSON Streaming Parser This packa

Max Grigorian 113 Dec 6, 2022
Provides an object-oriented API to query in-memory collections in a SQL-style.

POQ - PHP Object Query Install composer require alexandre-daubois/poq 1.0.0-beta2 That's it, ready to go! ?? Usage Here is the set of data we're going

Alexandre Daubois 16 Nov 29, 2022
Magento 2 Extension to cleanup admin menu and Store > Configuration area by arranging third party extension items.

Clean Admin Menu - Magento 2 Extension It will merge all 3rd party extension's menu items in backend's primary menu to a common menu item named "Exten

RedChamps 109 Jan 3, 2023
Magento 2 Blog Extension is a better blog extension for Magento 2 platform. These include all useful features of Wordpress CMS

Magento 2 Blog extension FREE Magento 2 Better Blog by Mageplaza is integrated right into the Magento backend so you can manage your blog and your e-c

Mageplaza 113 Dec 14, 2022