HEX
Server: Apache
System: Linux clpupre 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64
User: undanet (1000)
PHP: 7.4.3
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/undanet/www/PortalEmpleo/vendor/ocramius/proxy-manager/examples/virtual-proxy.php
<?php

declare(strict_types=1);

namespace ProxyManager\Example\VirtualProxy;

use Closure;
use ProxyManager\Factory\LazyLoadingValueHolderFactory;

require_once __DIR__ . '/../vendor/autoload.php';

class Foo
{
    public function __construct()
    {
        sleep(1);
    }

    public function doFoo() : void
    {
        echo 'Foo!';
    }
}

(static function () : void {
    $startTime = microtime(true);
    $factory   = new LazyLoadingValueHolderFactory();
    $i         = 0;

    do {
        $proxy = $factory->createProxy(
            Foo::class,
            static function (
                ?object & $wrappedObject, ?object $proxy, string $method, array $parameters, ?Closure & $initializer
            ) {
                $initializer = null;
                $wrappedObject = new Foo();

                return true;
            }
        );

        $i += 1;
    } while ($i < 1000);

    var_dump('time after 1000 instantiations: ' . (microtime(true) - $startTime));

    $proxy->doFoo();

    var_dump('time after single call to doFoo: ' . (microtime(true) - $startTime));
})();