🚀 Coroutine-based concurrency library for PHP

Overview

English | 中文

Swoole Logo

lib-swoole ext-swoole test-linux Coverity Scan Build Status codecov

Swoole is an event-driven asynchronous & coroutine-based concurrency networking communication engine with high performance written in C++ for PHP.

Event-based

The network layer in Swoole is event-based and takes full advantage of the underlying epoll/kqueue implementation, making it really easy to serve millions of requests.

Swoole 4.x uses a brand new engine kernel and now it has a full-time developer team, so we are entering an unprecedented period in PHP history which offers a unique possibility for rapid evolution in performance.

⚡️ Coroutine

Swoole 4.x or later supports the built-in coroutine with high availability, and you can use fully synchronized code to implement asynchronous performance. PHP code without any additional keywords, the underlying automatic coroutine-scheduling.

Developers can understand coroutines as ultra-lightweight threads, and you can easily create thousands of coroutines in a single process.

MySQL

Concurrency 10K requests to read data from MySQL takes only 0.2s!

$s = microtime(true);
Co\run(function() {
    for ($c = 100; $c--;) {
        go(function () {
            $mysql = new Swoole\Coroutine\MySQL;
            $mysql->connect([
                'host' => '127.0.0.1',
                'user' => 'root',
                'password' => 'root',
                'database' => 'test'
            ]);
            $statement = $mysql->prepare('SELECT * FROM `user`');
            for ($n = 100; $n--;) {
                $result = $statement->execute();
                assert(count($result) > 0);
            }
        });
    }
});
echo 'use ' . (microtime(true) - $s) . ' s';

Mixed server

You can create multiple services on the single event loop: TCP, HTTP, Websocket and HTTP2, and easily handle thousands of requests.

function tcp_pack(string $data): string
{
    return pack('N', strlen($data)) . $data;
}
function tcp_unpack(string $data): string
{
    return substr($data, 4, unpack('N', substr($data, 0, 4))[1]);
}
$tcp_options = [
    'open_length_check' => true,
    'package_length_type' => 'N',
    'package_length_offset' => 0,
    'package_body_offset' => 4
];
$server = new Swoole\WebSocket\Server('127.0.0.1', 9501, SWOOLE_BASE);
$server->set(['open_http2_protocol' => true]);
// http && http2
$server->on('request', function (Swoole\Http\Request $request, Swoole\Http\Response $response) {
    $response->end('Hello ' . $request->rawcontent());
});
// websocket
$server->on('message', function (Swoole\WebSocket\Server $server, Swoole\WebSocket\Frame $frame) {
    $server->push($frame->fd, 'Hello ' . $frame->data);
});
// tcp
$tcp_server = $server->listen('127.0.0.1', 9502, SWOOLE_TCP);
$tcp_server->set($tcp_options);
$tcp_server->on('receive', function (Swoole\Server $server, int $fd, int $reactor_id, string $data) {
    $server->send($fd, tcp_pack('Hello ' . tcp_unpack($data)));
});
$server->start();

Coroutine clients

Whether you DNS query or send requests or receive responses, all of these are scheduled by coroutine automatically.

go(function () {
    // http
    $http_client = new Swoole\Coroutine\Http\Client('127.0.0.1', 9501);
    assert($http_client->post('/', 'Swoole Http'));
    var_dump($http_client->body);
    // websocket
    $http_client->upgrade('/');
    $http_client->push('Swoole Websocket');
    var_dump($http_client->recv()->data);
});
go(function () {
    // http2
    $http2_client = new Swoole\Coroutine\Http2\Client('localhost', 9501);
    $http2_client->connect();
    $http2_request = new Swoole\Http2\Request;
    $http2_request->method = 'POST';
    $http2_request->data = 'Swoole Http2';
    $http2_client->send($http2_request);
    $http2_response = $http2_client->recv();
    var_dump($http2_response->data);
});
go(function () use ($tcp_options) {
    // tcp
    $tcp_client = new Swoole\Coroutine\Client(SWOOLE_TCP);
    $tcp_client->set($tcp_options);
    $tcp_client->connect('127.0.0.1', 9502);
    $tcp_client->send(tcp_pack('Swoole Tcp'));
    var_dump(tcp_unpack($tcp_client->recv()));
});

Channel

Channel is the only way for exchanging data between coroutines, the development combination of the Coroutine + Channel is the famous CSP programming model.

In Swoole development, Channel is usually used for implementing connection pool or scheduling coroutine concurrent.

The simplest example of a connection pool

In the following example, we have a thousand concurrently requests to redis. Normally, this has exceeded the maximum number of Redis connections setting and will throw a connection exception, but the connection pool based on Channel can perfectly schedule requests. We don't have to worry about connection overload.

class RedisPool
{
    /**@var \Swoole\Coroutine\Channel */
    protected $pool;

    /**
     * RedisPool constructor.
     * @param int $size max connections
     */
    public function __construct(int $size = 100)
    {
        $this->pool = new \Swoole\Coroutine\Channel($size);
        for ($i = 0; $i < $size; $i++) {
            $redis = new \Swoole\Coroutine\Redis();
            $res = $redis->connect('127.0.0.1', 6379);
            if ($res == false) {
                throw new \RuntimeException("failed to connect redis server.");
            } else {
                $this->put($redis);
            }
        }
    }

    public function get(): \Swoole\Coroutine\Redis
    {
        return $this->pool->pop();
    }

    public function put(\Swoole\Coroutine\Redis $redis)
    {
        $this->pool->push($redis);
    }

    public function close(): void
    {
        $this->pool->close();
        $this->pool = null;
    }
}

go(function () {
    $pool = new RedisPool();
    // max concurrency num is more than max connections
    // but it's no problem, channel will help you with scheduling
    for ($c = 0; $c < 1000; $c++) {
        go(function () use ($pool, $c) {
            for ($n = 0; $n < 100; $n++) {
                $redis = $pool->get();
                assert($redis->set("awesome-{$c}-{$n}", 'swoole'));
                assert($redis->get("awesome-{$c}-{$n}") === 'swoole');
                assert($redis->delete("awesome-{$c}-{$n}"));
                $pool->put($redis);
            }
        });
    }
});

Producer and consumers

Some Swoole's clients implement the defer mode for concurrency, but you can still implement it flexible with a combination of coroutines and channels.

go(function () {
    // User: I need you to bring me some information back.
    // Channel: OK! I will be responsible for scheduling.
    $channel = new Swoole\Coroutine\Channel;
    go(function () use ($channel) {
        // Coroutine A: Ok! I will show you the github addr info
        $addr_info = Co::getaddrinfo('github.com');
        $channel->push(['A', json_encode($addr_info, JSON_PRETTY_PRINT)]);
    });
    go(function () use ($channel) {
        // Coroutine B: Ok! I will show you what your code look like
        $mirror = Co::readFile(__FILE__);
        $channel->push(['B', $mirror]);
    });
    go(function () use ($channel) {
        // Coroutine C: Ok! I will show you the date
        $channel->push(['C', date(DATE_W3C)]);
    });
    for ($i = 3; $i--;) {
        list($id, $data) = $channel->pop();
        echo "From {$id}:\n {$data}\n";
    }
    // User: Amazing, I got every information at earliest time!
});

Timer

$id = Swoole\Timer::tick(100, function () {
    echo "⚙️ Do something...\n";
});
Swoole\Timer::after(500, function () use ($id) {
    Swoole\Timer::clear($id);
    echo "⏰ Done\n";
});
Swoole\Timer::after(1000, function () use ($id) {
    if (!Swoole\Timer::exists($id)) {
        echo "✅ All right!\n";
    }
});

The way of coroutine

go(function () {
    $i = 0;
    while (true) {
        Co::sleep(0.1);
        echo "📝 Do something...\n";
        if (++$i === 5) {
            echo "🛎 Done\n";
            break;
        }
    }
    echo "🎉 All right!\n";
});

🔥 Amazing runtime hooks

As of Swoole v4.1.0, we added the ability to transform synchronous PHP network libraries into co-routine libraries using a single line of code.

Simply call the Swoole\Runtime::enableCoroutine() method at the top of your script. In the sample below we connect to php-redis and concurrently read 10k requests in 0.1s:

Swoole\Runtime::enableCoroutine();
$s = microtime(true);
Co\run(function() {
    for ($c = 100; $c--;) {
        go(function () {
            ($redis = new Redis)->connect('127.0.0.1', 6379);
            for ($n = 100; $n--;) {
                assert($redis->get('awesome') === 'swoole');
            }
        });
    }
});
echo 'use ' . (microtime(true) - $s) . ' s';

By calling this method, the Swoole kernel replaces ZendVM stream function pointers. If you use php_stream based extensions, all socket operations can be dynamically converted to be asynchronous IO scheduled by coroutine at runtime!

How many things you can do in 1s?

Sleep 10K times, read, write, check and delete files 10K times, use PDO and MySQLi to communicate with the database 10K times, create a TCP server and multiple clients to communicate with each other 10K times, create a UDP server and multiple clients to communicate with each other 10K times... Everything works well in one process!

Just see what the Swoole brings, just imagine...

Swoole\Runtime::enableCoroutine();
$s = microtime(true);
Co\run(function() {
    // i just want to sleep...
    for ($c = 100; $c--;) {
        go(function () {
            for ($n = 100; $n--;) {
                usleep(1000);
            }
        });
    }

    // 10K file read and write
    for ($c = 100; $c--;) {
        go(function () use ($c) {
            $tmp_filename = "/tmp/test-{$c}.php";
            for ($n = 100; $n--;) {
                $self = file_get_contents(__FILE__);
                file_put_contents($tmp_filename, $self);
                assert(file_get_contents($tmp_filename) === $self);
            }
            unlink($tmp_filename);
        });
    }

    // 10K pdo and mysqli read
    for ($c = 50; $c--;) {
        go(function () {
            $pdo = new PDO('mysql:host=127.0.0.1;dbname=test;charset=utf8', 'root', 'root');
            $statement = $pdo->prepare('SELECT * FROM `user`');
            for ($n = 100; $n--;) {
                $statement->execute();
                assert(count($statement->fetchAll()) > 0);
            }
        });
    }
    for ($c = 50; $c--;) {
        go(function () {
            $mysqli = new Mysqli('127.0.0.1', 'root', 'root', 'test');
            $statement = $mysqli->prepare('SELECT `id` FROM `user`');
            for ($n = 100; $n--;) {
                $statement->bind_result($id);
                $statement->execute();
                $statement->fetch();
                assert($id > 0);
            }
        });
    }

    // php_stream tcp server & client with 12.8K requests in single process
    function tcp_pack(string $data): string
    {
        return pack('n', strlen($data)) . $data;
    }

    function tcp_length(string $head): int
    {
        return unpack('n', $head)[1];
    }

    go(function () {
        $ctx = stream_context_create(['socket' => ['so_reuseaddr' => true, 'backlog' => 128]]);
        $socket = stream_socket_server(
            'tcp://0.0.0.0:9502',
            $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN, $ctx
        );
        if (!$socket) {
            echo "$errstr ($errno)\n";
        } else {
            $i = 0;
            while ($conn = stream_socket_accept($socket, 1)) {
                stream_set_timeout($conn, 5);
                for ($n = 100; $n--;) {
                    $data = fread($conn, tcp_length(fread($conn, 2)));
                    assert($data === "Hello Swoole Server #{$n}!");
                    fwrite($conn, tcp_pack("Hello Swoole Client #{$n}!"));
                }
                if (++$i === 128) {
                    fclose($socket);
                    break;
                }
            }
        }
    });
    for ($c = 128; $c--;) {
        go(function () {
            $fp = stream_socket_client("tcp://127.0.0.1:9502", $errno, $errstr, 1);
            if (!$fp) {
                echo "$errstr ($errno)\n";
            } else {
                stream_set_timeout($fp, 5);
                for ($n = 100; $n--;) {
                    fwrite($fp, tcp_pack("Hello Swoole Server #{$n}!"));
                    $data = fread($fp, tcp_length(fread($fp, 2)));
                    assert($data === "Hello Swoole Client #{$n}!");
                }
                fclose($fp);
            }
        });
    }

    // udp server & client with 12.8K requests in single process
    go(function () {
        $socket = new Swoole\Coroutine\Socket(AF_INET, SOCK_DGRAM, 0);
        $socket->bind('127.0.0.1', 9503);
        $client_map = [];
        for ($c = 128; $c--;) {
            for ($n = 0; $n < 100; $n++) {
                $recv = $socket->recvfrom($peer);
                $client_uid = "{$peer['address']}:{$peer['port']}";
                $id = $client_map[$client_uid] = ($client_map[$client_uid] ?? -1) + 1;
                assert($recv === "Client: Hello #{$id}!");
                $socket->sendto($peer['address'], $peer['port'], "Server: Hello #{$id}!");
            }
        }
        $socket->close();
    });
    for ($c = 128; $c--;) {
        go(function () {
            $fp = stream_socket_client("udp://127.0.0.1:9503", $errno, $errstr, 1);
            if (!$fp) {
                echo "$errstr ($errno)\n";
            } else {
                for ($n = 0; $n < 100; $n++) {
                    fwrite($fp, "Client: Hello #{$n}!");
                    $recv = fread($fp, 1024);
                    list($address, $port) = explode(':', (stream_socket_get_name($fp, true)));
                    assert($address === '127.0.0.1' && (int)$port === 9503);
                    assert($recv === "Server: Hello #{$n}!");
                }
                fclose($fp);
            }
        });
    }
});
echo 'use ' . (microtime(true) - $s) . ' s';

⌛️ Installation

As with any open source project, Swoole always provides the most reliable stability and the most powerful features in the latest released version. Please ensure as much as possible that you are using the latest version.

Compiling requirements

  • Linux, OS X or Cygwin, WSL
  • PHP 7.2.0 or later (The higher the version, the better the performance.)
  • GCC 4.8 or later

1. Install via PECL (beginners)

pecl install swoole

2. Install from source (recommended)

Please download the source packages from Releases or:

git clone https://github.com/swoole/swoole-src.git && \
cd swoole-src

Compile and install at the source folder:

phpize && \
./configure && \
make && make install

Enable extension in PHP

After compiling and installing to the system successfully, you have to add a new line extension=swoole.so to php.ini to enable Swoole extension.

Extra compiler configurations

for example: ./configure --enable-openssl --enable-sockets

  • --enable-openssl or --with-openssl-dir=DIR
  • --enable-sockets
  • --enable-http2
  • --enable-mysqlnd (need mysqlnd, it just for supporting $mysql->escape method)
  • --enable-swoole-json
  • --enable-swoole-curl

Upgrade

⚠️ If you upgrade from source, don't forget to make clean before you upgrade your swoole

  1. pecl upgrade swoole
  2. cd swoole-src && git pull && make clean && make && sudo make install
  3. if you change your PHP version, please re-run phpize clean && phpize then try to compile

Major change since version 4.3.0

Async clients and API are moved to a separate PHP extension swoole_async since version 4.3.0, install swoole_async:

git clone https://github.com/swoole/ext-async.git
cd ext-async
phpize
./configure
make -j 4
sudo make install

Enable it by adding a new line extension=swoole_async.so to php.ini.

💎 Frameworks & Components

  • Hyperf is a coroutine framework that focuses on hyperspeed and flexibility, specifically used for build microservices or middlewares.
  • Swoft is a modern, high-performance AOP and coroutine PHP framework.
  • Easyswoole is a simple, high-performance PHP framework, based on Swoole, which makes using Swoole as easy as echo "hello world".
  • MixPHP is a powerful single-threaded coroutine framework with a very small footprint, simple and elegant.
  • imi is a high-performance coroutine application development framework based on PHP Swoole, which supports the development of HttpApi, WebSocket, TCP, UDP services.
  • Saber is a human-friendly, high-performance HTTP client component that has almost everything you can imagine.
  • One is a minimalist, high-performance PHP framework that supports the [swoole | php-fpm] environment

🛠 Develop & Discussion

🍭 Benchmark

  • On the open source Techempower Web Framework benchmarks Swoole used MySQL database benchmark to rank first, and all performance tests ranked in the first echelon.
  • You can just run Benchmark Script to quickly test the maximum QPS of Swoole-HTTP-Server on your machine.

🔰️ Security issues

Security issues should be reported privately, via email, to the Swoole develop team [email protected]. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message.

🖊️ Contribution

Your contribution to Swoole development is very welcome!

You may contribute in the following ways:

❤️ Contributors

This project exists thanks to all the people who contribute. [Contributors].

🎙️ Official Evangelist

Demin has been playing with PHP since 2000, focusing on building high-performance, secure web services. He is an occasional conference speaker on PHP and Swoole, and has been working for companies in the states like eBay, Visa and Glu Mobile for years. You may find Demin on Twitter or GitHub.

📃 License

Apache License Version 2.0 see http://www.apache.org/licenses/LICENSE-2.0.html

Comments
  • swoole很好但是 没有windows dll 支持 windows 开发环境,不利于推广

    swoole很好但是 没有windows dll 支持 windows 开发环境,不利于推广

    大部分人 一般是 开发环境 windows, 服务器运行环境 都是 linux

    因为 日常生活 其实 linux 桌面并不好用 种种原因,没有 dll 没法方便的在 windows下开发,不利于推广

    其实 windows 并不需要什么高性能的实现,只要能编译,能测试 就行了,没人 会把windows当成运行环境

    opened by munggruel 63
  • 4.5.11版本swoole 服务请求无响应

    4.5.11版本swoole 服务请求无响应

    Please answer these questions before submitting your issue.

    1. What did you do? If possible, provide a simple script for reproducing the error. swoole版本为4.5.11, 服务开启了抢占型协程
    Swoole\Coroutine::set([
        'enable_preemptive_scheduler' => 1 //设置打开协程抢占式调度,协程最大执行时间为 10ms
    ]);
    

    服务启动一段时间后,请求不同,无法正常响应。master、worker进程都在,端口仍被占用。但请求不通。 排查后发现worker被锁。 image kill掉一个worker后,有一定几率请求成功。

    1. What did you expect to see?、

    希望了解worker为什么被锁,以及怎么解决问题 swoole服务正常,请求正常响应

    1. What did you see instead?

    服务worker锁死,请求无法正常响应

    1. What version of Swoole are you using (show your php --ri swoole)?
    swoole
    
    Swoole => enabled
    Author => Swoole Team <[email protected]>
    Version => 4.5.11
    Built => Jan 23 2021 19:07:20
    coroutine => enabled
    epoll => enabled
    eventfd => enabled
    signalfd => enabled
    cpu_affinity => enabled
    spinlock => enabled
    rwlock => enabled
    openssl => OpenSSL 1.0.1j 15 Oct 2014
    pcre => enabled
    zlib => 1.2.7
    mutex_timedlock => enabled
    pthread_barrier => enabled
    futex => enabled
    async_redis => enabled
    
    Directive => Local Value => Master Value
    swoole.enable_coroutine => On => On
    swoole.enable_library => On => On
    swoole.enable_preemptive_scheduler => Off => Off
    swoole.display_errors => On => On
    swoole.use_shortname => On => On
    swoole.unixsock_buffer_size => 8388608 => 8388608
    
    1. What is your machine environment used (show your uname -a & php -v & gcc -v) ?
    [root@qbilling-price-idc-0 /data/log/billing]# uname -a
    Linux qbilling-price-idc-0 5.4.119-1-tlinux4-0009-eks #1 SMP Wed Feb 16 14:03:22 CST 2022 x86_64 x86_64 x86_64 GNU/Linux
    [root@qbilling-price-idc-0 /data/log/billing]# 
    [root@qbilling-price-idc-0 /data/log/billing]# gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
    Target: x86_64-redhat-linux
    Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
    Thread model: posix
    gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
    
    good question 
    opened by Frank-JY 42
  • Debugging Application with Xdebug

    Debugging Application with Xdebug

    PHP Version 7.1.9

    The documentation says that Swoole coroutine cannot be used with xdebug, while developling applications xdebug is very helpful tool. For smaller application it may not be a problem but larger applications makes it necessary to use it.

    My question is how can I debug applications while still using Swoole Coroutines ?

    question coroutine Incompatibility 
    opened by aftabnaveed 39
  • PHP 8.1.10 + swoole 4.8.12 core

    PHP 8.1.10 + swoole 4.8.12 core

    Please answer these questions before submitting your issue.

    1. What did you do? If possible, provide a simple script for reproducing the error. 线上生产环境下部署服务出现段错误,hyperf 接口项目,开启 jit

    2. What version of Swoole are you using (show your php --ri swoole)? 4.8.12

    3. What is your machine environment used (show your uname -a & php -v & gcc -v) ?

      • Linux **** 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
      • 8.1.10
      • gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)
    4. core 1

      #0  0x00007f36cd3651ba in memcpy (__len=56, __src=0x200000000, __dest=<optimized out>) at /usr/include/bits/string3.h:51
      #1  restore_og (task=0x7f3677e1e030) at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:571
      #2  swoole::PHPCoroutine::restore_task (task=task@entry=0x7f3677e1e030) at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:599
      #3  0x00007f36cd3652cd in swoole::PHPCoroutine::on_resume (arg=0x7f3677e1e030) at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:619
      #4  0x00007f36cd3f6857 in swoole::Coroutine::resume (this=0x3cfffb0) at /usr/src/debug/swoole-4.8.12.1/src/coroutine/base.cc:111
      #5  0x00007f36cd3f7759 in swoole::coroutine::Channel::push(void*, double) () at /usr/src/debug/swoole-4.8.12.1/src/coroutine/channel.cc:150
      #6  0x00007f36cd355d6a in zim_swoole_channel_coro_push () at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_channel_coro.cc:175
      #7  0x00000000009d4e95 in ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER () at /usr/src/debug/php-8.1.10/Zend/zend_vm_execute.h:1761
      #8  execute_ex () at /usr/src/debug/php-8.1.10/Zend/zend_vm_execute.h:55784
      #9  0x00007f36cd36448d in swoole::PHPCoroutine::main_func(void*) () at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:805
      #10 0x00007f36cd3f8211 in operator() (__args#0=<optimized out>, this=0x3d3e940) at /opt/rh/devtoolset-9/root/usr/include/c++/9/bits/std_function.h:683
      #11 swoole::coroutine::Context::context_func (arg=0x3d3e940) at /usr/src/debug/swoole-4.8.12.1/src/coroutine/context.cc:257
      #12 0x00007f36cd4772c1 in swoole_make_fcontext () at /usr/src/debug/swoole-4.8.12.1/thirdparty/boost/asm/make_x86_64_sysv_elf_gas.S:70
      #13 0x0000000000200010 in ?? ()
      #14 0x0000000000001181 in ?? ()
      #15 0x0000000003d05990 in ?? ()
      #16 0x0000000000001170 in ?? ()
      #17 0x00007f36dae29348 in opt_default_buf () from /usr/local/php8.1/lib/php/extensions/no-debug-non-zts-20210902/protobuf.so
      #18 0x0000000003cff7c0 in ?? ()
      #19 0x0000000003d05540 in ?? ()
      #20 0x0000000003f3f610 in ?? ()
      #21 0x0000000003f3f640 in ?? ()
      #22 0x0000000000000000 in ?? ()
      
      
      (gdb) f 1
      #1  restore_og (task=0x7f3677e1e030) at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:571
      571         memcpy(SWOG, task->output_ptr, sizeof(zend_output_globals));
      (gdb) f 0
      #0  0x00007f36cd3651ba in memcpy (__len=56, __src=0x200000000, __dest=<optimized out>) at /usr/include/bits/string3.h:51
      51    return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
      (gdb) f 1
      #1  restore_og (task=0x7f3677e1e030) at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:571
      571         memcpy(SWOG, task->output_ptr, sizeof(zend_output_globals));
      (gdb) f 2
      #2  swoole::PHPCoroutine::restore_task (task=task@entry=0x7f3677e1e030) at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:599
      599     restore_og(task);
      (gdb) f 3
      #3  0x00007f36cd3652cd in swoole::PHPCoroutine::on_resume (arg=0x7f3677e1e030) at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:619
      619     restore_task(task);
      (gdb) f 4
      #4  0x00007f36cd3f6857 in swoole::Coroutine::resume (this=0x3cfffb0) at /usr/src/debug/swoole-4.8.12.1/src/coroutine/base.cc:111
      111         on_resume(task);
      
    5. core 2

      #0  zend_gc_addref (p=0x18241a) at /usr/src/debug/php-8.1.10/Zend/zend_types.h:1184
      #1  zif_array_filter () at /usr/src/debug/php-8.1.10/ext/standard/array.c:5871
      #2  0x00000000009d356d in ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER () at /usr/src/debug/php-8.1.10/Zend/zend_vm_execute.h:1558
      #3  execute_ex () at /usr/src/debug/php-8.1.10/Zend/zend_vm_execute.h:55776
      #4  0x00007f36cd36448d in swoole::PHPCoroutine::main_func(void*) () at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:805
      #5  0x00007f36cd3f8211 in operator() (__args#0=<optimized out>, this=0x3cfc9c0) at /opt/rh/devtoolset-9/root/usr/include/c++/9/bits/std_function.h:683
      #6  swoole::coroutine::Context::context_func (arg=0x3cfc9c0) at /usr/src/debug/swoole-4.8.12.1/src/coroutine/context.cc:257
      #7  0x00007f36cd4772c1 in swoole_make_fcontext () at /usr/src/debug/swoole-4.8.12.1/thirdparty/boost/asm/make_x86_64_sysv_elf_gas.S:70
      #8  0x0000000000000000 in ?? ()
      
      
      (gdb) f 0
      #0  zend_gc_addref (p=0x18241a) at /usr/src/debug/php-8.1.10/Zend/zend_types.h:1184
      1184        return ++(p->refcount);
      (gdb) f 1
      #1  zif_array_filter () at /usr/src/debug/php-8.1.10/ext/standard/array.c:5871
      5871                    ZVAL_COPY(&args[0], operand);
      (gdb) f 2
      #2  0x00000000009d356d in ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER () at /usr/src/debug/php-8.1.10/Zend/zend_vm_execute.h:1558
      1558            fbc->internal_function.handler(call, ret);
      (gdb) f 3
      #3  execute_ex () at /usr/src/debug/php-8.1.10/Zend/zend_vm_execute.h:55776
      55776                   ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
      (gdb) f 4
      #4  0x00007f36cd36448d in swoole::PHPCoroutine::main_func(void*) () at /usr/src/debug/swoole-4.8.12.1/ext-src/swoole_coroutine.cc:805
      805             zend_execute_ex(EG(current_execute_data));
      
    waiting for user action 
    opened by starfalling 32
  • onClose中产生socket错误无法继续往下执行?

    onClose中产生socket错误无法继续往下执行?

    Please answer these questions before submitting your issue. Thanks!

    1. What did you do? If possible, provide a simple script for reproducing the error. 首先在onWorkerStart启动事件里面启用了Runtime::enableCoroutine 在onClose事件中调用了thrift协议的远程调用
    try {
        $client = new DeviceClient();
        $client->offLine($unique_mark);
    } catch (\Exception $e) {
        Log::warning('[Device:onClose:' . __LINE__ . ']msg: soa error . |data:', [
            'fd' => $fd,
            'msg' => $e->getMessage(),
        ]);
    }
    
    //DeviceClient的构造函数,除此之外其他都和thrfit官方生成的客户端相同,替换也就是替换了TScoket的实现
    $socket = new TSocket($serviceConfig['host'], $serviceConfig['port']);
    $socket->setRecvTimeout($serviceConfig['recv_timeout']);
    $socket->setSendTimeout($serviceConfig['send_timeout']);
    $socket->setDebug($serviceConfig['debug'] ?? false);
    
    $this->transport = new TBufferedTransport($socket, 4096, 4096);
    $protocol = new TBinaryProtocolAccelerated($this->transport);
    $this->input_ = $this->output_ = $protocol;
    
    $this->transport->open();
    

    用thrift官方实现的Socket客户端,如果try里发生连接异常,会在这里造成死循环,应该是重复回调onClose事件,主要是通过strace工具观察到woker进程一直在执行connect、epoll_ctl、epoll_wait、read、sendto、recvfrom,除了这些函数需要传入的ID不同,其他都是类似的在一直执行offLine。 后面我用swoole的协程Socket实现了socket客户端,替代了thrift官方的,之后就没有出现死循环造成进程100%占用了。 同时观测到在使用原生socket实现的客户端在执行过程中会有一次madvise调用,而用协程的没有这个调用。

    1. What did you expect to see? 正常

    2. What did you see instead? 死循环

    3. What version of Swoole are you using (show your php --ri swoole)?

    swoole
    
    Swoole => enabled
    Author => Swoole Team <[email protected]>
    Version => 4.4.13
    Built => Dec 19 2019 14:18:09
    coroutine => enabled
    epoll => enabled
    eventfd => enabled
    signalfd => enabled
    cpu_affinity => enabled
    spinlock => enabled
    rwlock => enabled
    sockets => enabled
    openssl => OpenSSL 1.0.2k-fips  26 Jan 2017
    http2 => enabled
    pcre => enabled
    zlib => 1.2.7
    mutex_timedlock => enabled
    pthread_barrier => enabled
    futex => enabled
    async_redis => enabled
    
    Directive => Local Value => Master Value
    swoole.enable_coroutine => On => On
    swoole.enable_library => On => On
    swoole.enable_preemptive_scheduler => Off => Off
    swoole.display_errors => On => On
    swoole.use_shortname => On => On
    swoole.unixsock_buffer_size => 8388608 => 8388608
    
    1. What is your machine environment used (including version of kernel & php & gcc) ?
    PHP 7.3.13 (cli) (built: Dec 19 2019 14:35:01) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.13, Copyright (c) 1998-2018 Zend Technologies
        with Zend OPcache v7.3.13, Copyright (c) 1999-2018, by Zend Technologies
    
    enhancement 
    opened by z5864703 30
  • swoole4.4.0关闭进程bug

    swoole4.4.0关闭进程bug

    Please answer these questions before submitting your issue. Thanks!

    1. What did you do? If possible, provide a simple script for reproducing the error. 服务启动正常,关闭进程的时候,使用\swoole_process::kill(main进程ID)关闭

    2. What did you expect to see? 所有main,manager,task,worker进程全部关闭

    3. What did you see instead? 所有main,manager,task,worker进程全部都没有关闭 如下两个操作进程全部正常关闭: 1.将swoole版本退回到4.3.2 2.exec('kill -9 ' . main进程ID)

    4. What version of Swoole are you using (show your php --ri swoole)? swoole 4.4.0

    5. What is your machine environment used (including version of kernel & php & gcc) ? centos7.6 php7.2.19 gcc4.8.5

    question 
    opened by a07061625 30
  • mac进程池的信号收不到

    mac进程池的信号收不到

    _t.txt 没有一个能创建成功

    <?php
    $pool = new Swoole\Process\Pool(1, SWOOLE_IPC_NONE, 0, true);
    $sigs = [
        WNOHANG,
        WUNTRACED,
        WCONTINUED,
        SIG_IGN,
        SIG_DFL,
        SIGHUP,
        SIGINT,
        SIGQUIT,
        SIGILL,
        SIGTRAP,
        SIGABRT,
        SIGIOT,
        SIGBUS,
        SIGFPE,
        SIGKILL,
        SIGUSR1,
        SIGSEGV,
        SIGUSR2,
        SIGPIPE,
        SIGALRM,
        SIGTERM,
        SIGCHLD,
        SIGCONT,
        SIGSTOP,
        SIGTSTP,
        SIGTTIN,
        SIGTTOU,
        SIGURG,
        SIGXCPU,
        SIGXFSZ,
        SIGVTALRM,
        SIGPROF,
        SIGWINCH,
        SIGIO,
        SIGSYS,
        SIGBABY,
        PRIO_PGRP,
        PRIO_USER,
        PRIO_PROCESS,
    ];
    file_put_contents('start.txt', '测试写入文件权限');
    $pool->on("WorkerStart", function (\Swoole\Process\Pool $pool, $workerId)use($sigs) {
        foreach ($sigs as $sign){
            Swoole\Process::signal($sign, function () use ($pool, $workerId,$sign) {
                file_put_contents($sign.'_t.txt', 'stop');
                echo "{$sign} \n";
                $pool->getProcess($workerId)->exit(1);
                exit(0);
                die;
            });
        }
    
        while (true) {
            echo "WorkerStart \n";
            sleep(1);
        }
    });
    $pool->on("WorkerStop", function ($pool, $workerId) {
        echo "WorkerStart \n";
        file_put_contents('_t.txt', 'stop');
    });
    $pool->start();
    
    
    wontfix 
    opened by ctfang 27
  • Compile Error on Mac Big Sur with PHP 8

    Compile Error on Mac Big Sur with PHP 8

    Please answer these questions before submitting your issue. Thanks!

    1. What did you do? If possible, provide a simple script for reproducing the error. Install swoole pecl install swoole

    2. What did you expect to see? swoole pecl extension

    3. What did you see instead? Compile termination error

    In file included from /private/tmp/pear/temp/swoole/ext-src/php_swoole.cc:21:
    /usr/local/Cellar/php/8.0.0_1/include/php/ext/pcre/php_pcre.h:23:10: fatal error: 'pcre2.h' file not found
    #include "pcre2.h"
             ^~~~~~~~~
    1 error generated.
    make: *** [ext-src/php_swoole.lo] Error 1
    ERROR: `make' failed
    
    1. What version of Swoole are you using (show your php --ri swoole)?
    pecl install swoole
    downloading swoole-4.5.9.tgz ...
    Starting to download swoole-4.5.9.tgz (1,552,445 bytes)
    ..................................................................................................................................................................................................................................................................................................................done: 1,552,445 bytes
    351 source files, building
    running: phpize
    Configuring for:
    PHP Api Version:         20200930
    Zend Module Api No:      20200930
    Zend Extension Api No:   420200930
    
    1. What is your machine environment used (show your uname -a & php -v & gcc -v) ?

    Darwin Kernel Version 20.1.0: Sat Oct 31 00:07:11 PDT 2020; root:xnu-7195.50.7~2/RELEASE_X86_64 x86_6

    PHP 8.0.0 (cli) (built: Nov 30 2020 13:51:52) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies with Zend OPcache v8.0.0, Copyright (c), by Zend Technologies

    opened by iambudi 25
  • alphine pgsql error

    alphine pgsql error

    Please answer these questions before submitting your issue. Thanks!

    1. What did you do? If possible, provide a simple script for reproducing the error. 不能连接pgsql 数据库 已经安装 ext-postgresql

    2. What did you expect to see?

    3. What did you see instead?

    4. What version of Swoole are you using (show your php --ri swoole)? swoole

    Swoole => enabled Author => Swoole Team [email protected] Version => 4.4.12 Built => Nov 28 2019 07:33:08 coroutine => enabled epoll => enabled eventfd => enabled signalfd => enabled spinlock => enabled rwlock => enabled openssl => OpenSSL 1.1.1d 10 Sep 2019 http2 => enabled mutex_timedlock => enabled pthread_barrier => enabled futex => enabled async_redis => enabled

    Directive => Local Value => Master Value swoole.display_errors => On => On swoole.enable_coroutine => On => On swoole.enable_library => On => On swoole.enable_preemptive_scheduler => Off => Off swoole.unixsock_buffer_size => 8388608 => 8388608 swoole.use_shortname => On => On

    1. What is your machine environment used (including version of kernel & php & gcc) ?

    mac

    1. docker file FROM php:alpine

    ENV SWOOLE_VERSION=4.4.12

    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
    && apk upgrade --update
    && apk add --no-cache --virtual .build-deps linux-headers autoconf libc-dev gcc g++ libstdc++ postgresql-dev make git
    && pecl install redis && docker-php-ext-enable redis
    && pecl install inotify && docker-php-ext-enable inotify
    && docker-php-ext-install bcmath
    && cd /tmp
    && curl -sSL "https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz" | tar xzf -
    && cd swoole-src-${SWOOLE_VERSION}
    && phpize
    && ./configure --enable-coroutine-postgresql --enable-async-redis --enable-openssl --enable-http2
    && make -j$(nproc) && make install
    && docker-php-ext-enable swoole
    && cd ~
    && git clone https://github.com/CXY037/ext-postgresql.git
    && cd ext-postgresql
    && phpize
    && ./configure
    && make && make install
    && docker-php-ext-enable swoole_postgresql
    && apk del .build-deps
    && apk add --no-cache libstdc++ postgresql-dev libc-dev
    && rm -r /tmp/swoole-src-${SWOOLE_VERSION}
    && rm -rf /tmp/*
    && rm -rf /var/cache/apk/*

    WORKDIR /var/www/project

    1. valgrind ==38== Memcheck, a memory error detector ==38== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==38== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info ==38== Command: php test.php ==38== Parent PID: 7 ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x404FE0C: strlcpy (in /lib/ld-musl-x86_64.so.1) ==38== by 0x48DB16F: ??? ==38== by 0x148: ??? ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x615CB6: zend_register_ini_entries (in /usr/local/bin/php) ==38== by 0x59D311: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x615D0E: zend_register_ini_entries (in /usr/local/bin/php) ==38== by 0x59D311: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x600D2A: zend_register_functions (in /usr/local/bin/php) ==38== by 0x601B35: ??? (in /usr/local/bin/php) ==38== by 0x60202D: zend_register_internal_class_ex (in /usr/local/bin/php) ==38== by 0x61C467: ??? (in /usr/local/bin/php) ==38== by 0x6319BD: zend_register_default_classes (in /usr/local/bin/php) ==38== by 0x61029A: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x605BF6: zend_declare_property_ex (in /usr/local/bin/php) ==38== by 0x605F0A: zend_declare_property (in /usr/local/bin/php) ==38== by 0x606167: zend_declare_property_string (in /usr/local/bin/php) ==38== by 0x61C4AD: ??? (in /usr/local/bin/php) ==38== by 0x6319BD: zend_register_default_classes (in /usr/local/bin/php) ==38== by 0x61029A: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x605B59: zend_declare_property_ex (in /usr/local/bin/php) ==38== by 0x605F0A: zend_declare_property (in /usr/local/bin/php) ==38== by 0x606167: zend_declare_property_string (in /usr/local/bin/php) ==38== by 0x61C4CF: ??? (in /usr/local/bin/php) ==38== by 0x6319BD: zend_register_default_classes (in /usr/local/bin/php) ==38== by 0x61029A: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x605B87: zend_declare_property_ex (in /usr/local/bin/php) ==38== by 0x605F0A: zend_declare_property (in /usr/local/bin/php) ==38== by 0x606167: zend_declare_property_string (in /usr/local/bin/php) ==38== by 0x61C655: ??? (in /usr/local/bin/php) ==38== by 0x6319BD: zend_register_default_classes (in /usr/local/bin/php) ==38== by 0x61029A: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x6063BE: zend_declare_class_constant_ex (in /usr/local/bin/php) ==38== by 0x606513: zend_declare_class_constant (in /usr/local/bin/php) ==38== by 0x60674E: zend_declare_class_constant_stringl (in /usr/local/bin/php) ==38== by 0x2664CF: ??? (in /usr/local/bin/php) ==38== by 0x266E43: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x600156: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x605C14: zend_declare_property_ex (in /usr/local/bin/php) ==38== by 0x605F0A: zend_declare_property (in /usr/local/bin/php) ==38== by 0x606047: zend_declare_property_long (in /usr/local/bin/php) ==38== by 0x3DB036: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60ABB9: zend_hash_del (in /usr/local/bin/php) ==38== by 0x605DE1: zend_declare_property_ex (in /usr/local/bin/php) ==38== by 0x605F0A: zend_declare_property (in /usr/local/bin/php) ==38== by 0x606047: zend_declare_property_long (in /usr/local/bin/php) ==38== by 0x3DB036: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x608FE7: zend_hash_add (in /usr/local/bin/php) ==38== by 0x5A6D8C: sapi_register_post_entry (in /usr/local/bin/php) ==38== by 0x5A6E61: sapi_register_post_entries (in /usr/local/bin/php) ==38== by 0x47997E: ??? (in /usr/local/bin/php) ==38== by 0x615D8F: zend_register_ini_entries (in /usr/local/bin/php) ==38== by 0x472D9E: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x601B5F: ??? (in /usr/local/bin/php) ==38== by 0x484AB5: ??? (in /usr/local/bin/php) ==38== by 0x48108E: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x601B5F: ??? (in /usr/local/bin/php) ==38== by 0x4C01A6: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x601B5F: ??? (in /usr/local/bin/php) ==38== by 0x60202D: zend_register_internal_class_ex (in /usr/local/bin/php) ==38== by 0x4B4484: ??? (in /usr/local/bin/php) ==38== by 0x4A2EDA: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x601B5F: ??? (in /usr/local/bin/php) ==38== by 0x57C292: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x601B5F: ??? (in /usr/local/bin/php) ==38== by 0x57CC9F: ??? (in /usr/local/bin/php) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x601B5F: ??? (in /usr/local/bin/php) ==38== by 0x527E621: zm_startup_redis (redis.c:772) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x53F4B21: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x53F4B21: zm_startup_swoole (swoole.cc:575) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x540B2AE: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x540B2AE: php_swoole_event_minit (swoole_event.cc:109) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540B314: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540B314: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540B314: php_swoole_event_minit (swoole_event.cc:112) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540B411: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540B411: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540B411: php_swoole_event_minit (swoole_event.cc:113) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540B50E: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540B50E: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540B50E: php_swoole_event_minit (swoole_event.cc:114) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540B60B: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540B60B: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540B60B: php_swoole_event_minit (swoole_event.cc:115) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540B819: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540B819: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540B819: php_swoole_event_minit (swoole_event.cc:117) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540B91F: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540B91F: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540B91F: php_swoole_event_minit (swoole_event.cc:118) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540BA25: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540BA25: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540BA25: php_swoole_event_minit (swoole_event.cc:119) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540BB36: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540BB36: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540BB36: php_swoole_event_minit (swoole_event.cc:120) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x540BC50: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x540BC50: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x540BC50: php_swoole_event_minit (swoole_event.cc:121) ==38== by 0x53F4BE9: zm_startup_swoole (swoole.cc:578) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x53F8C97: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x53F8C97: php_swoole_atomic_minit (swoole_atomic.cc:147) ==38== by 0x53F4BF0: zm_startup_swoole (swoole.cc:580) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x53F8D7A: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x53F8D7A: php_swoole_atomic_minit (swoole_atomic.cc:153) ==38== by 0x53F4BF0: zm_startup_swoole (swoole.cc:580) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x53F97AE: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x53F97AE: php_swoole_buffer_minit (swoole_buffer.c:81) ==38== by 0x53F4BF7: zm_startup_swoole (swoole.cc:581) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x54256EE: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x54256EE: php_swoole_lock_minit (swoole_lock.cc:60) ==38== by 0x53F4BFE: zm_startup_swoole (swoole.cc:582) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5436848: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5436848: php_swoole_process_minit (swoole_process.cc:180) ==38== by 0x53F4C05: zm_startup_swoole (swoole.cc:583) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5438F18: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5438F18: php_swoole_process_pool_minit (swoole_process_pool.cc:93) ==38== by 0x53F4C0C: zm_startup_swoole (swoole.cc:584) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x546D440: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x546D440: php_swoole_table_minit (swoole_table.cc:256) ==38== by 0x53F4C13: zm_startup_swoole (swoole.cc:585) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x546E22E: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x546E22E: php_swoole_timer_minit (swoole_timer.cc:92) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x546E305: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x546E305: php_swoole_timer_minit (swoole_timer.cc:95) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546E360: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546E360: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546E360: php_swoole_timer_minit (swoole_timer.cc:97) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546E45D: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546E45D: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546E45D: php_swoole_timer_minit (swoole_timer.cc:98) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546E563: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546E563: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546E563: php_swoole_timer_minit (swoole_timer.cc:99) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546E664: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546E664: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546E664: php_swoole_timer_minit (swoole_timer.cc:100) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546E76E: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546E76E: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546E76E: php_swoole_timer_minit (swoole_timer.cc:101) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546E86F: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546E86F: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546E86F: php_swoole_timer_minit (swoole_timer.cc:102) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546E975: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546E975: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546E975: php_swoole_timer_minit (swoole_timer.cc:103) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x546EA76: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x546EA76: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x546EA76: php_swoole_timer_minit (swoole_timer.cc:104) ==38== by 0x53F4C1A: zm_startup_swoole (swoole.cc:586) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x54067AE: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x54067AE: php_swoole_coroutine_minit (swoole_coroutine.cc:893) ==38== by 0x53F4C28: zm_startup_swoole (swoole.cc:589) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5406927: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5406927: php_swoole_coroutine_minit (swoole_coroutine.cc:896) ==38== by 0x53F4C28: zm_startup_swoole (swoole.cc:589) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x540689B: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x540689B: php_swoole_coroutine_minit (swoole_coroutine.cc:897) ==38== by 0x53F4C28: zm_startup_swoole (swoole.cc:589) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x540A36E: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x540A36E: php_swoole_coroutine_system_minit (swoole_coroutine_system.cc:105) ==38== by 0x53F4C2F: zm_startup_swoole (swoole.cc:590) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5408589: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5408589: php_swoole_coroutine_scheduler_minit (swoole_coroutine_scheduler.cc:113) ==38== by 0x53F4C36: zm_startup_swoole (swoole.cc:591) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x53FA645: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x53FA645: php_swoole_channel_coro_minit (swoole_channel_coro.cc:122) ==38== by 0x53F4C3D: zm_startup_swoole (swoole.cc:592) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x53FA7CF: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x53FA7CF: php_swoole_channel_coro_minit (swoole_channel_coro.cc:129) ==38== by 0x53F4C3D: zm_startup_swoole (swoole.cc:592) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5454342: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5454342: php_swoole_runtime_minit (swoole_runtime.cc:159) ==38== by 0x53F4C44: zm_startup_swoole (swoole.cc:593) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5468A9F: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5468A9F: php_swoole_socket_coro_minit (swoole_socket_coro.cc:751) ==38== by 0x53F4C4B: zm_startup_swoole (swoole.cc:595) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5468B2D: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5468B2D: php_swoole_socket_coro_minit (swoole_socket_coro.cc:761) ==38== by 0x53F4C4B: zm_startup_swoole (swoole.cc:595) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x53FC52E: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x53FC52E: php_swoole_client_minit (swoole_client.cc:180) ==38== by 0x53F4C52: zm_startup_swoole (swoole.cc:596) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5401984: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5401984: php_swoole_client_coro_minit (swoole_client_coro.cc:129) ==38== by 0x53F4C59: zm_startup_swoole (swoole.cc:597) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5418F22: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5418F22: php_swoole_http_client_coro_minit (swoole_http_client_coro.cc:1634) ==38== by 0x53F4C60: zm_startup_swoole (swoole.cc:598) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x542689A: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x542689A: php_swoole_mysql_coro_minit (swoole_mysql_coro.cc:1959) ==38== by 0x53F4C67: zm_startup_swoole (swoole.cc:599) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x54267FA: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x54267FA: php_swoole_mysql_coro_minit (swoole_mysql_coro.cc:1965) ==38== by 0x53F4C67: zm_startup_swoole (swoole.cc:599) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x540F02D: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x540F02D: php_swoole_http2_client_coro_minit (swoole_http2_client_coro.cc:257) ==38== by 0x53F4C75: zm_startup_swoole (swoole.cc:602) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x540E606: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x540E606: php_swoole_http2_client_coro_minit (swoole_http2_client_coro.cc:259) ==38== by 0x53F4C75: zm_startup_swoole (swoole.cc:602) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x540E838: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x540E838: php_swoole_http2_client_coro_minit (swoole_http2_client_coro.cc:265) ==38== by 0x53F4C75: zm_startup_swoole (swoole.cc:602) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x545C0F3: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x545C0F3: php_swoole_server_minit (swoole_server.cc:513) ==38== by 0x53F4C7C: zm_startup_swoole (swoole.cc:605) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x545C25A: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x545C25A: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x545C25A: php_swoole_server_minit (swoole_server.cc:519) ==38== by 0x53F4C7C: zm_startup_swoole (swoole.cc:605) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x545C35C: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x545C35C: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x545C35C: php_swoole_server_minit (swoole_server.cc:520) ==38== by 0x53F4C7C: zm_startup_swoole (swoole.cc:605) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x545C456: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x545C456: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x545C456: php_swoole_server_minit (swoole_server.cc:521) ==38== by 0x53F4C7C: zm_startup_swoole (swoole.cc:605) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x545C566: zend_hash_find_ptr (zend_hash.h:792) ==38== by 0x545C566: sw_zend_register_function_alias (php_swoole.h:843) ==38== by 0x545C566: php_swoole_server_minit (swoole_server.cc:523) ==38== by 0x53F4C7C: zm_startup_swoole (swoole.cc:605) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x545C6EC: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x545C6EC: php_swoole_server_minit (swoole_server.cc:525) ==38== by 0x53F4C7C: zm_startup_swoole (swoole.cc:605) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x545C95F: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x545C95F: php_swoole_server_minit (swoole_server.cc:532) ==38== by 0x53F4C7C: zm_startup_swoole (swoole.cc:605) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x546502A: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x546502A: php_swoole_server_port_minit (swoole_server_port.cc:84) ==38== by 0x53F4C83: zm_startup_swoole (swoole.cc:606) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x541DB2E: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x541DB2E: php_swoole_http_request_minit (swoole_http_request.cc:234) ==38== by 0x53F4C8A: zm_startup_swoole (swoole.cc:607) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5420FC8: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5420FC8: php_swoole_http_response_minit (swoole_http_response.cc:209) ==38== by 0x53F4C91: zm_startup_swoole (swoole.cc:608) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5421F3F: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5421F3F: php_swoole_http_server_minit (swoole_http_server.cc:177) ==38== by 0x53F4C98: zm_startup_swoole (swoole.cc:609) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5423C3A: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5423C3A: php_swoole_http_server_coro_minit (swoole_http_server_coro.cc:264) ==38== by 0x53F4C9F: zm_startup_swoole (swoole.cc:610) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5470D92: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5470D92: php_swoole_websocket_server_minit (swoole_websocket_server.cc:643) ==38== by 0x53F4CA6: zm_startup_swoole (swoole.cc:611) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5470FB5: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5470FB5: php_swoole_websocket_server_minit (swoole_websocket_server.cc:650) ==38== by 0x53F4CA6: zm_startup_swoole (swoole.cc:611) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x5450530: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x5450530: php_swoole_redis_server_minit (swoole_redis_server.cc:69) ==38== by 0x53F4CAD: zm_startup_swoole (swoole.cc:612) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624DCA: ??? (in /usr/local/bin/php) ==38== by 0x602124: zend_register_class_alias_ex (in /usr/local/bin/php) ==38== by 0x56DAE5B: sw_zend_register_class_alias (php_swoole.h:875) ==38== by 0x56DAE5B: swoole_postgresql_init(int) (swoole_postgresql_coro.cc:226) ==38== by 0x56DAE7A: zm_startup_swoole_postgresql(int, int) (swoole_postgresql_coro.cc:1402) ==38== by 0x6001AC: zend_startup_module_ex (in /usr/local/bin/php) ==38== by 0x60023B: ??? (in /usr/local/bin/php) ==38== by 0x60C961: zend_hash_apply (in /usr/local/bin/php) ==38== by 0x600519: zend_startup_modules (in /usr/local/bin/php) ==38== by 0x59D3C2: php_module_startup (in /usr/local/bin/php) ==38== by 0x683CBC: ??? (in /usr/local/bin/php) ==38== by 0x265C6C: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5E6881: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== by 0x5C75D7: compile_string (in /usr/local/bin/php) ==38== by 0x53AD48C: zend::swoole_compile_string(_zval_struct*, char*) (php_swoole_cxx.cc:51) ==38== by 0x5EF607: zend_eval_stringl (in /usr/local/bin/php) ==38== by 0x53AD6B5: zend::eval(std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >) (php_swoole_cxx.cc:61) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x5DB19B: ??? (in /usr/local/bin/php) ==38== by 0x5DB295: ??? (in /usr/local/bin/php) ==38== by 0x5E69DB: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== by 0x5C75D7: compile_string (in /usr/local/bin/php) ==38== by 0x53AD48C: zend::swoole_compile_string(_zval_struct*, char*) (php_swoole_cxx.cc:51) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5DC31F: ??? (in /usr/local/bin/php) ==38== by 0x5E05C8: ??? (in /usr/local/bin/php) ==38== by 0x5E296C: ??? (in /usr/local/bin/php) ==38== by 0x5E5F1F: ??? (in /usr/local/bin/php) ==38== by 0x5E626A: ??? (in /usr/local/bin/php) ==38== by 0x5E69FE: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5E6881: ??? (in /usr/local/bin/php) ==38== by 0x5E5A63: ??? (in /usr/local/bin/php) ==38== by 0x5E5A63: ??? (in /usr/local/bin/php) ==38== by 0x5E5CAA: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E8612: ??? (in /usr/local/bin/php) ==38== by 0x5E2786: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x5DB19B: ??? (in /usr/local/bin/php) ==38== by 0x5DB2AC: ??? (in /usr/local/bin/php) ==38== by 0x5E5E43: ??? (in /usr/local/bin/php) ==38== by 0x5E626A: ??? (in /usr/local/bin/php) ==38== by 0x5E69FE: ??? (in /usr/local/bin/php) ==38== by 0x5E5A63: ??? (in /usr/local/bin/php) ==38== by 0x5E5A63: ??? (in /usr/local/bin/php) ==38== by 0x5E5CAA: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E8612: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x5DB19B: ??? (in /usr/local/bin/php) ==38== by 0x5E5C2D: ??? (in /usr/local/bin/php) ==38== by 0x5E5A63: ??? (in /usr/local/bin/php) ==38== by 0x5E5CAA: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E8612: ??? (in /usr/local/bin/php) ==38== by 0x5E2786: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624C72: ??? (in /usr/local/bin/php) ==38== by 0x5DD876: ??? (in /usr/local/bin/php) ==38== by 0x5E337C: ??? (in /usr/local/bin/php) ==38== by 0x5E8607: ??? (in /usr/local/bin/php) ==38== by 0x5E2786: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== by 0x5C75D7: compile_string (in /usr/local/bin/php) ==38== by 0x53AD48C: zend::swoole_compile_string(_zval_struct*, char*) (php_swoole_cxx.cc:51) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5E6881: ??? (in /usr/local/bin/php) ==38== by 0x5E5DF1: ??? (in /usr/local/bin/php) ==38== by 0x5E626A: ??? (in /usr/local/bin/php) ==38== by 0x5E69FE: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E8612: ??? (in /usr/local/bin/php) ==38== by 0x5E2786: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5DC31F: ??? (in /usr/local/bin/php) ==38== by 0x5E44F9: ??? (in /usr/local/bin/php) ==38== by 0x5E68C5: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E4ECD: ??? (in /usr/local/bin/php) ==38== by 0x5E26D6: ??? (in /usr/local/bin/php) ==38== by 0x5E5F1F: ??? (in /usr/local/bin/php) ==38== by 0x5E626A: ??? (in /usr/local/bin/php) ==38== by 0x5E69FE: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E607: _zend_hash_find_known_hash (in /usr/local/bin/php) ==38== by 0x651C04: ??? (in /usr/local/bin/php) ==38== by 0x67C176: execute_ex (in /usr/local/bin/php) ==38== by 0x682A41: zend_execute (in /usr/local/bin/php) ==38== by 0x5EF756: zend_eval_stringl (in /usr/local/bin/php) ==38== by 0x53AD6B5: zend::eval(std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >) (php_swoole_cxx.cc:61) ==38== by 0x53F5818: php_swoole_load_library() (php_swoole_library.h:2331) ==38== by 0x53F6D94: zm_activate_swoole (swoole.cc:762) ==38== by 0x601D5F: zend_activate_modules (in /usr/local/bin/php) ==38== by 0x59C527: php_request_startup (in /usr/local/bin/php) ==38== by 0x684A04: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5DC31F: ??? (in /usr/local/bin/php) ==38== by 0x5E0E90: ??? (in /usr/local/bin/php) ==38== by 0x5E190F: ??? (in /usr/local/bin/php) ==38== by 0x5E1D4A: ??? (in /usr/local/bin/php) ==38== by 0x5EB3D6: ??? (in /usr/local/bin/php) ==38== by 0x5E94C9: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== by 0x5C75D7: compile_string (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5DC232: ??? (in /usr/local/bin/php) ==38== by 0x5DC2DF: ??? (in /usr/local/bin/php) ==38== by 0x5DC3AE: ??? (in /usr/local/bin/php) ==38== by 0x5E0E90: ??? (in /usr/local/bin/php) ==38== by 0x5E190F: ??? (in /usr/local/bin/php) ==38== by 0x5E1D4A: ??? (in /usr/local/bin/php) ==38== by 0x5EB3D6: ??? (in /usr/local/bin/php) ==38== by 0x5E94C9: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x5DB19B: ??? (in /usr/local/bin/php) ==38== by 0x5DB990: ??? (in /usr/local/bin/php) ==38== by 0x5E6CF1: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E8612: ??? (in /usr/local/bin/php) ==38== by 0x5E2786: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== by 0x5EA676: ??? (in /usr/local/bin/php) ==38== by 0x5E94A9: ??? (in /usr/local/bin/php) ==38== by 0x5EB3FB: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624C72: ??? (in /usr/local/bin/php) ==38== by 0x5DB19B: ??? (in /usr/local/bin/php) ==38== by 0x5E5C2D: ??? (in /usr/local/bin/php) ==38== by 0x5E5CAA: ??? (in /usr/local/bin/php) ==38== by 0x5E5EFB: ??? (in /usr/local/bin/php) ==38== by 0x5E626A: ??? (in /usr/local/bin/php) ==38== by 0x5E69FE: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E8612: ??? (in /usr/local/bin/php) ==38== by 0x5E2786: ??? (in /usr/local/bin/php) ==38== by 0x5E92FD: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x60E56F: zend_hash_find (in /usr/local/bin/php) ==38== by 0x5DC232: ??? (in /usr/local/bin/php) ==38== by 0x5DD14B: ??? (in /usr/local/bin/php) ==38== by 0x5EA88B: ??? (in /usr/local/bin/php) ==38== by 0x5E95D7: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== by 0x5C75D7: compile_string (in /usr/local/bin/php) ==38== by 0x53AD48C: zend::swoole_compile_string(_zval_struct*, char*) (php_swoole_cxx.cc:51) ==38== by 0x5EF607: zend_eval_stringl (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x5E1A80: ??? (in /usr/local/bin/php) ==38== by 0x5EB3D6: ??? (in /usr/local/bin/php) ==38== by 0x5E94C9: ??? (in /usr/local/bin/php) ==38== by 0x5EA676: ??? (in /usr/local/bin/php) ==38== by 0x5E94A9: ??? (in /usr/local/bin/php) ==38== by 0x5EAA1A: ??? (in /usr/local/bin/php) ==38== by 0x5E95D7: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624C72: ??? (in /usr/local/bin/php) ==38== by 0x5DB19B: ??? (in /usr/local/bin/php) ==38== by 0x5E31BC: ??? (in /usr/local/bin/php) ==38== by 0x5E5A63: ??? (in /usr/local/bin/php) ==38== by 0x5E5CAA: ??? (in /usr/local/bin/php) ==38== by 0x5E72B6: ??? (in /usr/local/bin/php) ==38== by 0x5E27FE: ??? (in /usr/local/bin/php) ==38== by 0x5E70F5: ??? (in /usr/local/bin/php) ==38== by 0x5E9547: ??? (in /usr/local/bin/php) ==38== by 0x5EA676: ??? (in /usr/local/bin/php) ==38== by 0x5E94A9: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x5DD876: ??? (in /usr/local/bin/php) ==38== by 0x5E337C: ??? (in /usr/local/bin/php) ==38== by 0x5E28B6: ??? (in /usr/local/bin/php) ==38== by 0x5E5A86: ??? (in /usr/local/bin/php) ==38== by 0x5E5CAA: ??? (in /usr/local/bin/php) ==38== by 0x5E72B6: ??? (in /usr/local/bin/php) ==38== by 0x5E27FE: ??? (in /usr/local/bin/php) ==38== by 0x5E70F5: ??? (in /usr/local/bin/php) ==38== by 0x5E9547: ??? (in /usr/local/bin/php) ==38== by 0x5EA676: ??? (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x5E20C3: ??? (in /usr/local/bin/php) ==38== by 0x5E9577: ??? (in /usr/local/bin/php) ==38== by 0x5EA676: ??? (in /usr/local/bin/php) ==38== by 0x5E94A9: ??? (in /usr/local/bin/php) ==38== by 0x5EAA1A: ??? (in /usr/local/bin/php) ==38== by 0x5E95D7: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== by 0x5C75D7: compile_string (in /usr/local/bin/php) ==38== ==38== Conditional jump or move depends on uninitialised value(s) ==38== at 0x624AC2: zend_string_equal_val (in /usr/local/bin/php) ==38== by 0x624B96: ??? (in /usr/local/bin/php) ==38== by 0x605BF6: zend_declare_property_ex (in /usr/local/bin/php) ==38== by 0x5E2093: ??? (in /usr/local/bin/php) ==38== by 0x5E9577: ??? (in /usr/local/bin/php) ==38== by 0x5EA676: ??? (in /usr/local/bin/php) ==38== by 0x5E94A9: ??? (in /usr/local/bin/php) ==38== by 0x5EAA1A: ??? (in /usr/local/bin/php) ==38== by 0x5E95D7: ??? (in /usr/local/bin/php) ==38== by 0x5EBFBD: ??? (in /usr/local/bin/php) ==38== by 0x5EC017: ??? (in /usr/local/bin/php) ==38== by 0x5C582B: ??? (in /usr/local/bin/php) ==38== ==38== ==38== More than 100 errors detected. Subsequent errors ==38== will still be recorded, but in less detail than before. ==38== Invalid read of size 8 ==38== at 0x5404DCF: get_origin_task (swoole_coroutine.h:149) ==38== by 0x5404DCF: swoole::PHPCoroutine::on_yield(void*) (swoole_coroutine.cc:602) ==38== by 0x54063B8: swoole::PHPCoroutine::yield_m(_zval_struct*, php_coro_context*) (swoole_coroutine.cc:873) ==38== by 0x56DAA69: zim_swoole_postgresql_coro_connect(_zend_execute_data*, _zval_struct*) (swoole_postgresql_coro.cc:322) ==38== by 0x6812B2: execute_ex (in /usr/local/bin/php) ==38== by 0x682A41: zend_execute (in /usr/local/bin/php) ==38== by 0x5FCB22: zend_execute_scripts (in /usr/local/bin/php) ==38== by 0x59DD97: php_execute_script (in /usr/local/bin/php) ==38== by 0x684F9F: ??? (in /usr/local/bin/php) ==38== by 0x265EE9: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== Address 0x50 is not stack'd, malloc'd or (recently) free'd ==38== ==38== ==38== Process terminating with default action of signal 11 (SIGSEGV) ==38== Access not within mapped region at address 0x50 ==38== at 0x5404DCF: get_origin_task (swoole_coroutine.h:149) ==38== by 0x5404DCF: swoole::PHPCoroutine::on_yield(void*) (swoole_coroutine.cc:602) ==38== by 0x54063B8: swoole::PHPCoroutine::yield_m(_zval_struct*, php_coro_context*) (swoole_coroutine.cc:873) ==38== by 0x56DAA69: zim_swoole_postgresql_coro_connect(_zend_execute_data*, _zval_struct*) (swoole_postgresql_coro.cc:322) ==38== by 0x6812B2: execute_ex (in /usr/local/bin/php) ==38== by 0x682A41: zend_execute (in /usr/local/bin/php) ==38== by 0x5FCB22: zend_execute_scripts (in /usr/local/bin/php) ==38== by 0x59DD97: php_execute_script (in /usr/local/bin/php) ==38== by 0x684F9F: ??? (in /usr/local/bin/php) ==38== by 0x265EE9: ??? (in /usr/local/bin/php) ==38== by 0x401E138: (below main) (in /lib/ld-musl-x86_64.so.1) ==38== If you believe this happened as a result of a stack ==38== overflow in your program's main thread (unlikely but ==38== possible), you can try to increase the size of the ==38== main thread stack using the --main-stacksize= flag. ==38== The main thread stack size used in this run was 8388608. ==38== ==38== HEAP SUMMARY: ==38== in use at exit: 3,961,677 bytes in 23,455 blocks ==38== total heap usage: 30,508 allocs, 7,053 frees, 6,437,647 bytes allocated ==38== ==38== LEAK SUMMARY: ==38== definitely lost: 576 bytes in 24 blocks ==38== indirectly lost: 400 bytes in 12 blocks ==38== possibly lost: 1,984,874 bytes in 15,737 blocks ==38== still reachable: 1,975,827 bytes in 7,682 blocks ==38== suppressed: 0 bytes in 0 blocks ==38== Rerun with --leak-check=full to see details of leaked memory ==38== ==38== For counts of detected and suppressed errors, rerun with: -v ==38== Use --track-origins=yes to see where uninitialised values come from ==38== ERROR SUMMARY: 1937 errors from 101 contexts (suppressed: 0 from 0)
    duplicate 
    opened by CXY037 25
  • I get a SSL error swSSL_connection_error (ERRNO 1014)

    I get a SSL error swSSL_connection_error (ERRNO 1014)

    Please answer these questions before submitting your issue. Thanks!

    1. What did you do? If possible, provide a simple script for reproducing the error.
    • I get many errors which is shown below.
    • It is shown error when sending an image data (about 8KB) to SSL connected client.
    NOTICE	swSSL_connection_error (ERRNO 1014): SSL connection#0[IP:Port] protocol error[127]
    
    • I'm using Let's encrypt certification file.

    Short Script.

    go(function () use ($packet, $channel, $synchronizer) {
    ...
        $data = 'data:image/jpeg;base64,' . base64_encode($packet);
    
        for ($i = 1, $chunks = str_split($data, $client->getChunkSize()), $loops = count($chunks); $i <= $loops; $i++) {
            $client
                ->enableBuffer(false)
                ->enableChunk(false)
                ->write(
                    WebSocket::encodeMessage(
                        $client,
                        $chunks[$i - 1],
                        $i === 1
                            ? WebSocket::OPCODE_MESSAGE
                            : WebSocket::OPCODE_CONTINUATION,
                        $i === $loops
                    )
                );
        }
    }
    ...
    
    • $packet is an image data.

    • It is encoding text with WebSocket RFC.

    Full code is here: https://github.com/memory-agape/magnolia-server/blob/master/src/magnolia/Client/Camera.php#L103

    1. What did you expect to see? Don't show errors.

    2. What did you see instead?

    3. What version of Swoole are you using (show your php --ri swoole)?

    swoole
    
    Swoole => enabled
    Author => Swoole Team <[email protected]>
    Version => 4.4.2
    Built => Jul 27 2019 15:27:18
    coroutine => enabled
    epoll => enabled
    eventfd => enabled
    signalfd => enabled
    cpu_affinity => enabled
    spinlock => enabled
    rwlock => enabled
    openssl => OpenSSL 1.0.2k-fips  26 Jan 2017
    http2 => enabled
    pcre => enabled
    zlib => enabled
    mutex_timedlock => enabled
    pthread_barrier => enabled
    futex => enabled
    async_redis => enabled
    
    1. What is your machine environment used (including version of kernel & php & gcc) ? OS: CentOS 7 on Docker
    PHP 7.3.7 (cli) (built: Jul  3 2019 11:30:22) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies
        with Zend OPcache v7.3.7, Copyright (c) 1999-2018, by Zend Technologies
    

    Details is here: https://github.com/memory-agape/magnolia-server/blob/master/infra/php/Dockerfile

    waiting for user action in progress 
    opened by m3m0r7 25
  • Techempower - First results

    Techempower - First results

    First bench results for Swoole are in:

    https://www.techempower.com/benchmarks/#section=test&runid=ec8d20d8-2530-4a7d-a9c2-157bebdb9b81

    JSON serialization is now almost double thanks to the BASE change. 646,732 -> 1,153,488

    Some other results are faster then PHP and almost Go level. But some are remarkably slower despite using the exact same code as the PHP7-Raw ( with the only exception being that Swoole using a case statement ).

    Worst results are the plaintext ... What makes no sense at all php-swoole | 1,090 with errors. When my expectation was close to 2.000.000.

    https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/frameworks/PHP/php/swoole-server.php

    What normally needs to result in a very simple result, is so strange.

    opened by Wulfklaue 25
  • m1 已经正常编译 swoole-src-5.0.1 swoole.so 也生成了,也加到了php.ini 里,但是 php —ri swoole 报错

    m1 已经正常编译 swoole-src-5.0.1 swoole.so 也生成了,也加到了php.ini 里,但是 php —ri swoole 报错

    Please answer these questions before submitting your issue.

    1. What version of Swoole are you using (show your php --ri swoole)? Warning: PHP Startup: Unable to load dynamic library 'swoole' (tried: /Applications/MAMP/bin/php/php8.0.0/lib/php/extensions/no-debug-non-zts-20200930/swoole (dlopen(/Applications/MAMP/bin/php/php8.0.0/lib/php/extensions/no-debug-non-zts-20200930/swoole, 0x0009): tried: '/Applications/MAMP/bin/php/php8.0.0/lib/php/extensions/no-debug-non-zts-20200930/swoole' (no such file)), /Applications/MAMP/bin/php/php8.0.0/lib/php/extensions/no-debug-non-zts-20200930/swoole.so (dlopen(/Applications/MAMP/bin/php/php8.0.0/lib/php/extensions/no-debug-non-zts-20200930/swoole.so, 0x0009): tried: '/Applications/MAMP/bin/php/php8.0.0/lib/php/extensions/no-debug-non-zts-20200930/swoole.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')))) in Unknown on line 0

    2. What is your machine environment used (show your uname -a & php -v & gcc -v) ? php -v PHP 8.0.0 (cli) (built: Nov 30 2020 13:50:38) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies gcc -v Apple clang version 13.0.0 (clang-1300.0.29.3) Target: arm64-apple-darwin21.5.0 Thread model: posix

    opened by zsboss 0
  • swoolecli cgywin websocket服务器 push 二进制流后内存不会释放 越来越多最后就炸了 SWOOLE_BASE

    swoolecli cgywin websocket服务器 push 二进制流后内存不会释放 越来越多最后就炸了 SWOOLE_BASE

    public function SendBinaryToSocket(int $fd,array $data,string $binary) { if($this->server->exist($fd)) { $jsonData = json_encode($data,320); $jsonLength = strlen($jsonData); $binaryLength = strlen($binary); $sendData = pack("II",$jsonLength,$binaryLength); $sendData .= pack("A*",$jsonData); $sendData .= pack("A*",$binary); $result = $this->server->push($fd,$sendData,WEBSOCKET_OPCODE_BINARY); unset($sendData); return $result; }
    return 0; }

    opened by w099099w 0
  • swoole抛出一个bug

    swoole抛出一个bug

    swoole抛出一个bug,日志如下

    [2023-01-06 14:05:22 $24669.0]	WARNING	Server::check_worker_exit_status(): worker(pid=24672, id=0) abnormal exit, status=0, signal=11
    A bug occurred in Swoole-v5.0.1, please report it.
    The Swoole developers probably don't know about it,
    and unless you report it, chances are it won't be fixed.
    You can read How to report a bug doc before submitting any bug reports:
    >> https://github.com/swoole/swoole-src/blob/master/.github/ISSUE.md
    Please do not send bug reports in the mailing list or personal letters.
    The issue page is also suitable to submit feature requests.
    
    OS: Linux 4.15.0-122-generic #124-Ubuntu SMP Thu Oct 15 13:03:05 UTC 2020 x86_64
    GCC_VERSION: 7.5.0
    OPENSSL_VERSION: OpenSSL 1.1.1  11 Sep 2018
    PHP_VERSION : 8.0.8
    
    waiting for user action 
    opened by lizcao 1
  • Http Server - SWOOLE_HOOK_TCP - stream_socket_enable_crypto()

    Http Server - SWOOLE_HOOK_TCP - stream_socket_enable_crypto()

    Hi there, Love the project. Ran into a bit of an issue and I'm stumped.

    • I'm using your http server which is behind nginx.
    • The problem is sending an email (Using PHPmailer) during an api call.
    • I have the server setup like this:
    $server = new Swoole\HTTP\Server('[::]', 9009);
    $cpus = swoole_cpu_num();
    $server->set([
      'reactor_num' => $cpus * 2,
      'worker_num' => $cpus * 8,
      'task_enable_coroutine' => true,
      'hook_flags' => SWOOLE_HOOK_TCP | SWOOLE_HOOK_NATIVE_CURL | SWOOLE_HOOK_SLEEP | SWOOLE_HOOK_BLOCKING_FUNCTION,
      'dispatch_mode' => 1
    ]);
    
    • The reason for not using ALL hooks was because I'm not seeing great performance with it. I get the feeling its bouncing around between coroutines to much or something. Must be something with my application work flow, I do have lots of logging etc. I noticed not including this one makes a difference in speed: SWOOLE_HOOK_FILE
    • Sending an email I spawn another coroutine using the go() command to run it async, then I see this during smtp:
    2022-11-17 04:35:42.969 >> Api d-ivr01 123151 [INFO ] SMTP: Connection: opening to email-smtp.us-east-1.amazonaws.com:25, timeout=300, options=[]
    2022-11-17 04:35:42.969 >> Api d-ivr01 123151 [INFO ] Sending email: smathers@???????.com Subject: sdas
    2022-11-17 04:35:42.972 >> Api d-ivr01 123151 [INFO ] SMTP: Connection: opened
    2022-11-17 04:35:42.974 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "220 email-smtp.amazonaws.com ESMTP SimpleEmailService-????????"
    2022-11-17 04:35:42.974 >> Api d-ivr01 123151 [INFO ] SMTP: SERVER -> CLIENT: 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-????????
    2022-11-17 04:35:42.974 >> Api d-ivr01 123151 [INFO ]
    2022-11-17 04:35:42.974 >> Api d-ivr01 123151 [INFO ] SMTP: CLIENT -> SERVER: EHLO d-ivr01
    2022-11-17 04:35:42.974 >> Api d-ivr01 123151 [INFO ]
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "250-email-smtp.amazonaws.com"
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "250-8BITMIME"
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "250-STARTTLS"
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "250-AUTH PLAIN LOGIN"
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "250 Ok"
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] SMTP: SERVER -> CLIENT: 250-email-smtp.amazonaws.com
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] 250-8BITMIME
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] 250-STARTTLS
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] 250-AUTH PLAIN LOGIN
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ] 250 Ok
    2022-11-17 04:35:42.975 >> Api d-ivr01 123151 [INFO ]
    2022-11-17 04:35:42.976 >> Api d-ivr01 123151 [INFO ] SMTP: CLIENT -> SERVER: STARTTLS
    2022-11-17 04:35:42.976 >> Api d-ivr01 123151 [INFO ]
    2022-11-17 04:35:42.977 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "220 Ready to start TLS"
    2022-11-17 04:35:42.977 >> Api d-ivr01 123151 [INFO ] SMTP: SERVER -> CLIENT: 220 Ready to start TLS
    2022-11-17 04:35:42.977 >> Api d-ivr01 123151 [INFO ]
    2022-11-17 04:35:43.072 >> Api d-ivr01 123151 [INFO ] SMTP: CLIENT -> SERVER: QUIT
    2022-11-17 04:35:43.072 >> Api d-ivr01 123151 [INFO ]
    2022-11-17 04:35:43.074 >> Api d-ivr01 123151 [INFO ] SMTP: SMTP INBOUND: "221 Bye"
    2022-11-17 04:35:43.074 >> Api d-ivr01 123151 [INFO ] SMTP: SERVER -> CLIENT: 221 Bye
    2022-11-17 04:35:43.074 >> Api d-ivr01 123151 [INFO ]
    2022-11-17 04:35:43.074 >> Api d-ivr01 123151 [INFO ] SMTP: Connection: closed
    
    • If I remove the hook: SWOOLE_HOOK_TCP, it works. Problem is though I want that hook for the mysqli!!
    • I looked through the the PHPmailer code and my best guess is there is an issue with stream_socket_enable_crypto and the streams hook or I've missed something.

    Thanks!!

    Server Info:

    Swoole => enabled
    Author => Swoole Team <[email protected]>
    Version => 5.0.1-dev
    Built => Nov 16 2022 22:29:32
    coroutine => enabled with boost asm context
    epoll => enabled
    eventfd => enabled
    signalfd => enabled
    cpu_affinity => enabled
    spinlock => enabled
    rwlock => enabled
    openssl => OpenSSL 1.1.1f  31 Mar 2020
    dtls => enabled
    http2 => enabled
    json => enabled
    pcre => enabled
    zlib => 1.2.11
    mutex_timedlock => enabled
    pthread_barrier => enabled
    futex => enabled
    async_redis => enabled
    
    Directive => Local Value => Master Value
    swoole.enable_coroutine => On => On
    swoole.enable_library => On => On
    swoole.enable_preemptive_scheduler => Off => Off
    swoole.display_errors => On => On
    swoole.use_shortname => On => On
    swoole.unixsock_buffer_size => 8388608 => 8388608
    
    Linux d-ivr01 5.15.0-1022-aws #26~20.04.1-Ubuntu SMP Sat Oct 15 03:23:19 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
    PHP 8.0.3 (cli) (built: Jan 20 2022 03:43:11) ( NTS )
    Copyright (c) The PHP Group
    Zend Engine v4.0.3, Copyright (c) Zend Technologies
        with Zend OPcache v8.0.3, Copyright (c), by Zend Technologies
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/9/lto-wrapper
    Target: aarch64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
    Thread model: posix
    gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
    
    waiting on review 
    opened by smathersPersonal 1
  • What is this error

    What is this error "ERROR have been bailout, can not resume any coroutine" ?

    Hello,

    With "use Swoole\Coroutine\HTTP\Client;"

    Into a "Co\run(function()",

    I have this error :

    ERROR have been bailout, can not resume any coroutine

    But I don't understand who write or send this error and when .... Can you please say me who can write / send this error ? What function or method ?

    Thanks

    1. What version of Swoole are you using (show your php --ri swoole)?
    swoole
    
    Swoole => enabled
    Author => Swoole Team <[email protected]>
    Version => 4.8.12
    Built => Oct 12 2022 14:35:15
    coroutine => enabled with boost asm context
    epoll => enabled
    eventfd => enabled
    signalfd => enabled
    cpu_affinity => enabled
    spinlock => enabled
    rwlock => enabled
    openssl => OpenSSL 1.1.1n  15 Mar 2022
    dtls => enabled
    zlib => 1.2.11
    brotli => E16777225/D16777225
    mutex_timedlock => enabled
    pthread_barrier => enabled
    futex => enabled
    mysqlnd => enabled
    async_redis => enabled
    
    Directive => Local Value => Master Value
    swoole.enable_coroutine => On => On
    swoole.enable_library => On => On
    swoole.enable_preemptive_scheduler => Off => Off
    swoole.display_errors => On => On
    swoole.use_shortname => On => On
    swoole.unixsock_buffer_size => 8388608 => 8388608
    
    1. What is your machine environment used (show your uname -a & php -v & gcc -v) ? Linux dmpsk 4.18.0-305.40.2.el8_4.x86_64 #1 SMP Tue Mar 8 14:29:54 EST 2022 x86_64 GNU/Linux
    PHP 8.1.1 (cli) (built: Dec 21 2021 19:46:50) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.1.1, Copyright (c) Zend Technologies
        with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
    
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/10/lto-wrapper
    OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa:hsa
    OFFLOAD_TARGET_DEFAULT=1
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Debian 10.2.1-6' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-10-Km9U7s/gcc-10-10.2.1/debian/tmp-gcn/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex
    Thread model: posix
    Supported LTO compression algorithms: zlib zstd
    gcc version 10.2.1 20210110 (Debian 10.2.1-6) 
    
    waiting on review 
    opened by dlorenzomop 15
  • Cannot build swoole 5.0.0 in macos-11.0 src/core/base.cc:70:9: error: use of undeclared identifier 'CCRandomGenerateBytes'

    Cannot build swoole 5.0.0 in macos-11.0 src/core/base.cc:70:9: error: use of undeclared identifier 'CCRandomGenerateBytes'

    Please answer these questions before submitting your issue.

    1. What did you do? If possible, provide a simple script for reproducing the error.
    OPENSSL_VERSION="1.1.1p"
    #in swoole dir
    
    ./configure --with-php-config="$INSTALL_DIR/bin/php-config" \
    --with-openssl-dir="$OPENSSL_DIR" \
    --enable-http2 \
    --enable-swoole-json
    
    1. What did you expect to see?

    ubuntu-18.04: compile success

    macos: compile success

    1. What did you see instead?

    ubuntu-18.04: compile success

    macos:

    /Users/runner/work/php-build-scripts/php-build-scripts/install_data/subdir/php/ext/swoole/src/core/base.cc:70:9: error: use of undeclared identifier 'CCRandomGenerateBytes'
        if (CCRandomGenerateBytes(buffer, size) == kCCSuccess) {
            ^
    /Users/runner/work/php-build-scripts/php-build-scripts/install_data/subdir/php/ext/swoole/src/core/base.cc:70:48: error: use of undeclared identifier 'kCCSuccess'
        if (CCRandomGenerateBytes(buffer, size) == kCCSuccess) {
                                                   ^
    1 warning generated.
    
    1. What version of Swoole are you using (show your php --ri swoole)?

    5.0.0 in github releases

    1. What is your machine environment used (show your uname -a & php -v & gcc -v) ?

    PHP: 8.0.22

    Darwin Mac-1662258959767.local 20.6.0 Darwin Kernel Version 20.6.0: Tue Jun 21 20:50:28 PDT 2022; root:xnu-7195.141.32~1/RELEASE_X86_64 x86_64
    
    in progress 
    opened by Blackjack200 3
Releases(v5.0.1)
  • v5.0.1(Nov 7, 2022)

    • Supported PHP-8.2
    • Improved coroutine exception handling, compatible with ext-soap
    • Fixed parameter compatibility of Coroutine::printBackTrace() and debug_print_backtrace()
    • Added pgsql coroutine client LOB supports
    • Fixed Event::add() support for sockets resources
    • Fixed compile error when no zlib
    • Improved websocket client, upgrade header contains websocket instead of equal
    • Optimized http client, disable keep-alive when server sends connection close
    • Optimized http client, prohibit adding the Accept-Encoding header without compression library
    • Improved debug info, set password as sensitive parameter under PHP-8.2
    • Fixed crash when unpack server task parsed to an unexpected string
    • Enhanced Server::taskWaitMulti(), no blocking in coroutine environment
    • Fixed the problem that adding a timer less than 1ms is forced to 0
    • Fixed crash when using table::getMemorySize() before add columns
    • Optimized log function, no longer print screen when writing to the log file fails
    • Modify the expire parameter name of Http\Response::setCookie() to expires, fix #4780
    Source code(tar.gz)
    Source code(zip)
    swoole-cli-v5.0.1-cygwin64.zip(74.89 MB)
    swoole-cli-v5.0.1-linux-x64.tar.xz(16.50 MB)
    swoole-cli-v5.0.1-macos-x64.tar.xz(15.87 MB)
  • v4.8.12(Sep 21, 2022)

    • Supports PHP-8.2
    • Enhanced Event::add() support for sockets resources
    • Fixed incorrect error message when wrong multipart body is received
    • Improved Http\Client::sendfile(), support large files over 4G
    • Improved Server::taskWaitMulti(), support coroutine environment
    • Fixed incorrect error message when add timer less than 1ms
    • Fixed deadlock caused by writing log when disk is full
    Source code(tar.gz)
    Source code(zip)
  • v5.0.0(Aug 1, 2022)

    Minimum PHP version requirement is 8.0

    Added

    • Added max_concurrency option for Server
    • Added max_retries option for Coroutine\Http\Client
    • Added name_resolver global option
    • Added upload_max_filesize option for Server
    • Added Coroutine::getExecuteTime()
    • Added SWOOLE_DISPATCH_CONCURRENT_LB dispatch_mode for Server

    Changed

    • Enhanced type system, added types for parameters and return values of all functions
    • Optimized error handling, all constructors will throw exceptions when fail
    • Adjusted the default mode of Server, the default is SWOOLE_BASE mode
    • Migrate pgsql coroutine client to core
    • Contains all bugfixes from the 4.8.x branch

    Removed

    • Removed PSR-0 style class names
    • Removed the automatic addition of Event::wait() in shutdown function
    • Removed Server::tick/after/clearTimer/defer aliases
    • Removed --enable-http2/--enable-swoole-json, adjusted to be enable by default

    Deprecated

    • Deprecated Coroutine\Redis and Coroutine\MySQL
    Source code(tar.gz)
    Source code(zip)
    swoole-cli-v5.0.0-cygwin64.zip(72.60 MB)
    swoole-cli-v5.0.0-linux-x64.tar.xz(16.04 MB)
    swoole-cli-v5.0.0-macos-x64.tar.gz(23.81 MB)
  • v4.8.11(Jul 8, 2022)

  • v4.8.9(Apr 16, 2022)

  • v4.8.8(Mar 16, 2022)

  • v4.8.7(Feb 18, 2022)

  • v4.8.6(Jan 11, 2022)

  • v4.8.5(Dec 24, 2021)

  • v4.8.4(Dec 17, 2021)

  • v4.8.3(Dec 1, 2021)

    • Fixed compatibility of curl native hook with PHP-8.1
    • Fixed compatibility of sockets hook with PHP-8
    • Fixed the return value error of sockets hook function
    • Added Coroutine\Socket::isClosed()
    • Fixed Http2Server sendfile cannot set content-type
    • Optimize performance of HttpServer date header

    中文

    1. 修复 curl native hook 在 php8.1 版本下的兼容性问题
    2. 修复 sockets hook 在 php8 下的兼容性问题
    3. 修复 sockets hook 函数返回值错误
    4. 增加 Coroutine\Socket::isClosed() 方法
    5. 修复 Http2Server sendfile 无法设置 content-type
    6. 优化 HttpServer date header 的性能,增加了 cache
    Source code(tar.gz)
    Source code(zip)
    swoole-cygwin-v4.8.3.zip(46.83 MB)
  • v4.8.2(Nov 17, 2021)

    • Fixed memory leak of proc_open hook
    • Fixed compatibility of curl native hook with PHP-8.0 and PHP-8.1
    • Fixed connection cannot be closed normally in the Manager process
    • Fixed Manager process cannot use sendMessage
    • Fixed Coroutine\Http\Server received abnormally large POST data parsing
    • Fixed cannot exit directly when a fatal error occurs in PHP8 environment
    • Adjust coroutine max_concurrency option, only allowed to be used in Co::set()
    • Adjust Coroutine::join() to ignore non-exists coroutine

    中文

    • 修复 proc_open hook 内存泄露的问题
    • 修复 curl native hook 与 PHP-8.0、PHP-8.1 的兼容性问题
    • 修复 Manager 进程中无法正常关闭连接的问题
    • 修复 Manager 进程无法使用 sendMessage 的问题
    • 修复 Coroutine\Http\Server 接收超大 POST 数据解析异常的问题
    • 修复 PHP8 环境下致命错误时进行不能直接退出的问题
    • 调整 coroutine max_concurrency 配置项,只允许在 Co::set() 中使用
    • 调整 Coroutine::join() 忽略不存在的协程
    Source code(tar.gz)
    Source code(zip)
    swoole-cygwin-v4.8.2.zip(46.84 MB)
  • v4.8.1(Oct 29, 2021)

    New APIs

    • Added swoole_error_log_ex(), swoole_ignore_error() (#4440) (@matyhtf)

    Enhancement

    • Migrate admin api from ext-swoole_plus to swoole-src (#4441) (@matyhtf)
    • Added get_composer_packages command for admin server (swoole/library@07763f46) (swoole/library@8805dc05) (swoole/library@175f1797) (@sy-records) (@yunbaoi)
    • Added POST method request restrictions for write operations (swoole/library@ac16927c) (@yunbaoi)
    • Supported to get the method information of the class by get_function_info (swoole/library@690a1952) (@djw1028769140) (@sy-records)
    • Optimized admin server code (swoole/library#128) (swoole/library#131) (@sy-records)
    • Supported to request multiple groups of server information for admin server (swoole/library#124) (@sy-records)
    • Supported to get interface info for admin server (swoole/library#130) (@sy-records)
    • Supported CURLOPT_HTTPPROXYTUNNEL for SWOOLE_HOOK_CURL (swoole/library#126) (@sy-records)

    Fixed

    • Prohibit coroutine concurrent join (#4442) (@matyhtf)
    • Fixed init_row, don't clear lock_ and lock_pid (#4446) (@Txhua) (@matyhtf)
    • Fixed missing helper options (swoole/library#123) (@sy-records)
    • Fixed get_static_property_value command error (swoole/library#129) (@sy-records)
    Source code(tar.gz)
    Source code(zip)
    swoole-cygwin-v4.8.1.zip(46.81 MB)
  • v4.8.0(Oct 14, 2021)

    Backward compatibility Break

    • In base mode, the onStart callback is always called back when the first worker process (worker ID is 0) starts, before onWorkerStart callback. The coroutine API can always be used in the onStart callback, and onStart is called back again when worker-0 restarts with a fatal error (#4389) (@matyhtf)
      • In versions prior to 4.8.0, onStart is called back in worker-0 when there is only one worker process, and called back in the Manager process when there are multiple worker processes.

    New APIs

    • Added Co::getStackUsage() (#4398) (@matyhtf) (@twose)
    • Added Coroutine\Redis some api (#4390) (@chrysanthemum)
    • Added Table::stats() (#4405) (@matyhtf)
    • Added Coroutine::join() (#4406) (@matyhtf)

    New feature

    • Supported server command (#4389) (@matyhtf)
    • Supported Server::onBeforeShutdown callback (#4415) (@matyhtf)

    Enhancement

    • Set error code when websocket pack fails (swoole/swoole-src@d27c5a5) (@matyhtf)
    • Added Timer::exec_count field (#4402) (@matyhtf)
    • Supported for hooked mkdir using open_basedir ini config (#4407) (@NathanFreeman)
    • Added vendor_init.php (swoole/library@6c40b02) (@matyhtf)
    • Supported CURLOPT_UNIX_SOCKET_PATH for SWOOLE_HOOK_CURL (swoole/library#121) (@sy-records)
    • Supported ssl_ciphers config for client (#4432) (@amuluowin)
    • Added some new information for Server::stats() (#4410) (#4412) (@matyhtf)

    Fixed

    • Fixed unnecessary URL decode of file names when uploading files (swoole/swoole-src@a73780e) (@matyhtf)
    • Fixed HTTP2 max_frame_size error (#4394) (@twose)
    • Fixed curl_multi_select bug #4393 (#4418) (@matyhtf)
    • Fixed missing coroutine options (#4425) (@sy-records)
    • Fixed connection cannot be forcibly closed when the send buffer is full (swoole/swoole-src@2198378) (@matyhtf)
    Source code(tar.gz)
    Source code(zip)
    swoole-cygwin-v4.8.0.zip(45.77 MB)
  • v4.7.1(Aug 19, 2021)

    New feature

    • Introduce a new concurrency mode (#4330) (@doubaokun)

    Enhancement

    • Supported query /etc/hosts for System::dnsLookup (#4341) (#4349) (@zmyWL) (@NathanFreeman)
    • Supported boost context support for mips64 (#4358) (@dixyes)
    • Supported CURLOPT_RESOLVE option for SWOOLE_HOOK_CURL (swoole/library#107) (@sy-records)
    • Supported CURLOPT_NOPROGRESS for SWOOLE_HOOK_CURL (swoole/library#117) (@sy-records)
    • Supported boost context support for riscv64 (#4375) (@dixyes)

    Fixed

    • Fixed memory error on shutdown (PHP-8.1) (#4325) (@twose)
    • Fixed not serializable classes for 8.1.0beta1 (#4335) (@remicollet)
    • Fixed multiple coroutines recursively creating directories (#4337) (@NathanFreeman)
    • Fixed native curl bugs (#4360) (@matyhtf)
    • Fixed PDOStatement::bindParam() expects parameter 1 to be string (swoole/library#116) (@sy-records)
    Source code(tar.gz)
    Source code(zip)
    swoole-cygwin-v4.7.1.zip(43.79 MB)
  • v4.7.0(Jul 16, 2021)

    New APIs

    • Added Process\Pool::detach() (#4221) (@matyhtf)
    • Added onDisconnect callback for Swoole\Server (#4230) (@matyhtf)
    • Added Coroutine::cancel() (#4247) (#4249) (@matyhtf)
    • Added http_compression/body_decompression options for Http Client (#4299) (@matyhtf)

    Enhancement

    • Supported mysql client prepare field type identification (#4238) (@Yurunsoft)
    • Supported c-ares, Refactor DNS (#4275) (@matyhtf)
    • Supported setting different idle time for each port (#4290) (@matyhtf)
    • Supported SW_DISPATCH_CO_CONN_LB and SW_DISPATCH_CO_REQ_LB for Swoole\Server dispatch_mode (#4318) (@matyhtf)
    • Supported timeout for Swoole\ConnectionPool::get (swoole/library#108) (@leocavalcante)
    • Supported CURLOPT_PRIVATE for Hook Curl (swoole/library#112) (@sy-records)
    • Optimized PDOStatementProxy::setFetchMode function prototype (swoole/library#109) (@yespire)

    Fixed

    • Fixed uncaught thread creation exception when creating a large number of coroutines (swoole/swoole-src@8ce5041) (@matyhtf)
    • Fixed the "make install" missing php_swoole.h header file (#4239) (@sy-records)
    • Fixed EVENT_HANDSHAKE BC (#4248) (@sy-records)
    • Fixed SW_LOCK_CHECK_RETURN (#4302) (@zmyWL)
    • Fixed problems with Swoole\Atomic\Long M1 chip (swoole/swoole-src@e6fae2e) (@matyhtf)
    • Fixed missing return value of Coroutine\go (swoole/library@1ed49db) (@matyhtf)
    • Fixed StringObject consistency between other methods and its immutability (swoole/library#111) (@leocavalcante)
    • Fixed StringObject substr error (swoole/library#113) (@sy-records)

    Kernel

    • Did not hook disabled functions (#4283) (@twose)

    Test

    • Added Cygwin build (#4222) (@sy-records)
    • Added alpine 3.13 and 3.14 into building test (#4309) (@limingxinleo)
    Source code(tar.gz)
    Source code(zip)
    swoole-cygwin-v4.7.0.zip(43.62 MB)
  • v4.6.7(May 14, 2021)

    Enhancement

    • Supported call Process::signal() in Manager process and Task synchronous process (#4190) (@matyhtf)

    Fixed

    • Fixed signal cannot be registered repeatedly (#4170) (@matyhtf)
    • Fixed build on OpenBSD/NetBSD (#4188) (#4194) (@devnexen)
    • Fixed special case OnClose event missing while listening for writable events (#4204) (@matyhtf)
    • Fixed native curl with Symfony HttpClient (#4208) (@matyhtf)
    • Fixed Http\Response::end() always return true (swoole/swoole-src@66fcc35) (@matyhtf)
    • Fixed PDOException generated by PDOStatementProxy (swoole/library#104) (@twose)

    Kernel

    • Refactored worker buffer, add msg id for the event data (#4163) (@matyhtf)
    • Changed the log level of "Request Entity Too Large" to warning (#4175) (@sy-records)
    • Deleted inet_ntoa and inet_aton calls (#4199) (@remicollet)
    • Adjusted output_buffer_size value to UINT_MAX (swoole/swoole-src@46ab345) (@matyhtf)
    Source code(tar.gz)
    Source code(zip)
  • v4.6.6(Apr 22, 2021)

    Enhancement

    • Sent SIGTERM to the manager process on FreeBSD when master process is dead (#4150) (@devnexen)
    • Supported static compilation with PHP (#4153) (@matyhtf)
    • Supported SNI for File Wrapper over HTTP proxy (#4158) (@matyhtf)

    Fixed

    • Fixed sync-client async connect bugs (#4152) (@matyhtf)
    • Fixed native curl multi mem leak (swoole/swoole-src@91bf243) (@matyhtf)
    Source code(tar.gz)
    Source code(zip)
  • v4.6.5(Apr 9, 2021)

    New APIs

    • Add count method to WaitGroup (swoole/library#100) (@sy-records) (@deminy)

    Enhancement

    • Supported native curl multi (#4093) (#4099) (#4101) (#4105) (#4113) (#4121) (swoole/swoole-src@cd7f51c) (#4147) (@matyhtf) (@sy-records) (@huanghantao)
    • Allow array HTTP/2 headers, Bug fixed for #4133 (#4140)

    Fixed

    • Fixed NetBSD build (#4080) (@devnexen)
    • Fixed OpenBSD build. (#4108) (@devnexen)
    • Fixed illumos/solaris build, member aliases only (#4109) (@devnexen)
    • Fixed heartbeat detection of SSL connection does not take effect when handshake is not completed (#4114) (@matyhtf)
    • Fixed httpclient proxy with host and port (#4124) (@Yurunsoft)
    • Fixed Swoole\Coroutine\Http::request, correct array to the client setting (swoole/library#103) (@leocavalcante) (@deminy)

    Kernel

    • Supported asm context on BSD (#4082) (@devnexen)
    • Used arc4random_buf to implement getrandom under FreeBSD (#4096) (@devnexen)
    • Make context darwin arm64: removes workaround and uses the label (#4127) (@devnexen)

    Test

    • Added build job for alpine (#4104) (@limingxinleo)
    Source code(tar.gz)
    Source code(zip)
  • v4.4.25(Apr 9, 2021)

  • v4.6.4(Mar 11, 2021)

    New APIs

    • Added Coroutine\Http::request, Coroutine\Http::post, Coroutine\Http::get (swoole/library#97) (@matyhtf)

    Enhancement

    • Supported ARM 64 build (#4057) (@devnexen)
    • Supported set open_http_protocol in Swoole TCP Server (#4063) (@matyhtf)
    • Supported ssl client only set certificate (swoole/swoole-src@91704ac) (@matyhtf)
    • Supported tcp_defer_accept option for FreeBSD (#4049) (@devnexen)

    Fixed

    • Fixed Proxy-Authorization missing when use Coroutine\Http\Client (swoole/swoole-src@edc0552) (@matyhtf)
    • Fixed memory allocation issues with Swoole\Table (swoole/swoole-src@3e7770f) (@matyhtf)
    • Fixed crash when Coroutine\Http2\Client connects concurrently (swoole/swoole-src@630536d) (@matyhtf)
    • Fixed enable_ssl_encrypt with DTLS (swoole/swoole-src@842733b) (@matyhtf)
    • Fixed Coroutine\Barrier mem leak (swoole/library#94) (@Appla) (@FMiS)
    • Fixed the offset error caused by CURLOPT_PORT and CURLOPT_URL order (swoole/library#96) (@sy-records)
    • Fixed Table::get($key, $field) when field type is float (swoole/swoole-src@08ea20c) (@matyhtf)
    • Fixed Swoole\Table mem leaks (swoole/swoole-src@d78ca8c) (@matyhtf)
    Source code(tar.gz)
    Source code(zip)
  • v4.4.24(Mar 11, 2021)

  • v4.6.3(Feb 9, 2021)

    New APIs

    • Added Swoole\Coroutine\go function (swoole/library@82f63be) (@matyhtf)
    • Added Swoole\Coroutine\defer function (swoole/library@92fd0de) (@matyhtf)

    Enhancement

    • Added option compression_min_length for HTTP Server (#4033) (@matyhtf)
    • Allowed setting content-length HTTP header in application layer (#4041) (@doubaokun)

    Fixed

    • Fixed coredump when program reach file open limitation (swoole/swoole-src@709813f) (@matyhtf)
    • Fixed JIT being disabled (#4029) (@twose)
    • Fixed Response::create() bug (swoole/swoole-src@a630b5b) (@matyhtf)
    • Fixed task process id false positives on ARM (#4040) (@doubaokun)
    • Fixed README (#4046) (@asheroto)
    • Fixed native-curl crash on PHP8 (#4042) (#4045) (@Yurunsoft) (@matyhtf)
    • Fixed mem error (#4050) (@matyhtf)

    Kernel

    • Optimized ssl_connect/ssl_shutdown (#4030) (@matyhtf)
    • Exit the process directly when a fatal error occurs (#4053) (@matyhtf)
    Source code(tar.gz)
    Source code(zip)
  • v4.6.2(Jan 25, 2021)

    New APIs

    • Added Http::Request::getMethod() (#3987) (@luolaifa000)
    • Added Coroutine::Socket:recvLine() (#4014) (@matyhtf)
    • Added Socket::readWithBuffer() (#4017) (@matyhtf)

    Enhancement

    • Improved Response::create() (#3998) (@matyhtf)
    • Supported Coroutine\Redis::hExists return bool with compatibility_mode (swoole/swoole-src@b8cce7c) (@matyhtf)
    • Supported PHP_NORMAL_READ for socket_read (swoole/swoole-src@b1a0dcc) (@matyhtf)

    Fixed

    • Fixed Coroutine::defer coredump in PHP8 (#3997) (@huanghantao)
    • Fixed Coroutine::Socket::errCode is not set correctly when using thread context (swoole/swoole-src@004d08a) (@matyhtf)
    • Fixed build Swoole error on latest macos (#4007) (@matyhtf)
    • Fixed php stream context is nullptr when use md5_file with url (#4016) (@ZhiyangLeeCN)
    • Fixed rshutdown deprecated warning when throw exception (#4026) (@huanghantao)

    Kernel

    • Used AIO thread hook stdio instead of coroutine socket (#4002) (@matyhtf)
    • Refactor HttpContext (#3998) (@matyhtf)
    • Refactor Process::wait() (#4019) (@matyhtf)
    Source code(tar.gz)
    Source code(zip)
  • v4.6.1(Jan 11, 2021)

    Enhancement

    • Added --enable-thread-context option (#3970) (@matyhtf)
    • Strict session_id, check the connection activity (#3993) (@matyhtf)
    • Optimized CURLOPT_PROXY, support user, pass and scheme (swoole/library#87) (sy-records)

    Fixed

    • Fixed minimal PHP version (#3979) (@remicollet)
    • Fixed pecl install missing enable-swoole-json and enable-swoole-curl options (#3980) (@sy-records)
    • Fixed openssl thread safety issue (swoole/swoole-src@b516d69) (@matyhtf)
    • Fixed enableSSL coredump (#3990) (@huanghantao)

    Kernel

    • Optimized ipc writev, avoid coredump how event data is null (#3994) (@matyhtf)
    Source code(tar.gz)
    Source code(zip)
  • v4.5.11(Jan 10, 2021)

    Enhancement

    • Optimize table (#3959) (@matyhtf)
    • Enhancement CURLOPT_PROXY (swoole/library#87) (@sy-records)

    Fixed

    • Clear all columns when incr and decr (#3956) (@matyhtf)
    • Fixed compile error (49fea171) (@matyhtf)
    • Fixed fread bugs (#3972) (@matyhtf)
    • Fixed openssl thread safety issue (7ee2c1a0) (@matyhtf)
    • Fixed Invalid argument supplied for foreach (swoole/library#80) (@sy-records)
    • Fixed trigger_error param error (swoole/library#86) (@sy-records)
    Source code(tar.gz)
    Source code(zip)
  • v4.6.0(Jan 6, 2021)

    Backward compatibility Break

    • Removed the maximum limit of session id, never repeat (#3879) (@matyhtf)
    • Disabled unsafe function when use Coroutine, including pcntl_fork/pcntl_wait/pcntl_waitpid/pcntl_sigtimedwait (#3880) (@matyhtf)
    • Enabled coroutine hook by default (#3903) (@matyhtf)

    Remove

    • No longer support PHP-7.1 (swoole/swoole-src@4a963df) (swoole/swoole-src@9de8d9e) (@matyhtf)

    Deprecated

    • Marked the Event::rshutdown() as deprecated, please use Coroutine::run instead (#3881) (@matyhtf)

    New APIs

    • Supported setPriority/getPriority (#3876) (@matyhtf)
    • Supported native-curl hook (#3863) (@matyhtf) (@huanghantao)
    • Supported object style callback parameters for Server, off by default (#3888) (@matyhtf)
    • Supported ext-sockets hook (#3898) (@matyhtf)
    • Supported duplicate header (#3905) (@matyhtf)
    • Supported SSL sni (#3908) (@matyhtf)
    • Supported hook stdio (#3924) (@matyhtf)
    • Supported capture_peer_cert option for stream_socket (#3930) (@matyhtf)
    • Added Http\Request::create/parse/isCompleted (#3938) (@matyhtf)
    • Added Http\Response::isWritable (swoole/swoole-src@db56827) (@matyhtf)

    Enhancement

    • All time accuracy of Server changed from int to double (#3882) (@matyhtf)
    • Added poll EINTR check for swoole_client_select (#3909) (@shiguangqi)
    • Added coroutine deadlock detect (#3911) (@matyhtf)
    • Supported closing the connection in another process with server base mode (#3916) (@matyhtf)
    • Optimized send to worker from master, reduced memory copy (#3910) (@huanghantao) (@matyhtf)

    Fixed

    • Pop Coroutine::Channel data when channel is closed (swoole/swoole-src@960431d) (@matyhtf)
    • Fixed memory error when use JIT (#3907) (@twose)
    • Fixed port->set() dtls compile error (#3947) (@Yurunsoft)
    • Fixed connection_list error (#3948) (@sy-records)
    • Fixed ssl verify (#3954) (@matyhtf)
    • Clear all columns when incr and decr (#3956) (@matyhtf) (@sy-records)
    • Fixed failed to compile with LibreSSL 2.7.5 (#3962) (@matyhtf)
    • Fixed undefined constant CURLOPT_HEADEROPT and CURLOPT_PROXYHEADER (swoole/library#77) (@sy-records)

    Kernel

    • Ignored SIGPIPE signal by default (swoole/swoole-src@9647678) (@matyhtf)
    • Supported running php and c coroutines at same time (swoole/swoole-src@c94bfd8) (@matyhtf)
    • Added TEST(coroutine_base, get_elapsed) (#3961) (@luolaifa000)
    • Added TEST(coroutine_base, get_init_msec) (#3964) (@luffluo)
    Source code(tar.gz)
    Source code(zip)
  • v4.5.10(Dec 23, 2020)

    Fixed

    • Fixed Event::cycle coredump (93901dc0) (@matyhtf)
    • Fixed PHP8 compatibility (f0dc6d32) (@matyhtf)
    • Fixed connection_list error (#3948) (@sy-records)
    Source code(tar.gz)
    Source code(zip)
  • v4.6.0-beta(Dec 17, 2020)

Owner
Swoole Project
Coroutine-based concurrency library for PHP
Swoole Project
Icicle is a PHP library for writing asynchronous code using synchronous coding techniques

Icicle is now deprecated in favor of Amp v2.0. This version is is currently under development, but close to release. The v2.0 branches are amp_v2 in a

icicle.io 1.1k Dec 21, 2022
Événement is a very simple event dispatching library for PHP.

Événement Événement is a very simple event dispatching library for PHP. It has the same design goals as Silex and Pimple, to empower the user while st

Igor 1.2k Jan 4, 2023
A pragmatic event sourcing library for PHP with a focus on developer experience.

EventSaucePHP EventSauce is a somewhat opinionated, no-nonsense, and easy way to introduce event sourcing into PHP projects. It's designed so storage

EventSauce 685 Dec 31, 2022
The Hoa\Websocket library.

Hoa is a modular, extensible and structured set of PHP libraries. Moreover, Hoa aims at being a bridge between industrial and research worlds. Hoa\Web

Hoa 419 Dec 30, 2022
The Hoa\Eventsource library.

Hoa is a modular, extensible and structured set of PHP libraries. Moreover, Hoa aims at being a bridge between industrial and research worlds. Hoa\Eve

Hoa 106 Dec 5, 2022
[READ-ONLY] The event dispatcher library for CakePHP. This repo is a split of the main code that can be found in https://github.com/cakephp/cakephp

CakePHP Event Library This library emulates several aspects of how events are triggered and managed in popular JavaScript libraries such as jQuery: An

CakePHP 21 Oct 6, 2022
An asynchronous event driven PHP socket framework. Supports HTTP, Websocket, SSL and other custom protocols. PHP>=5.3.

Workerman What is it Workerman is an asynchronous event-driven PHP framework with high performance to build fast and scalable network applications. Wo

walkor 10.2k Jan 4, 2023
Event-driven, non-blocking I/O with PHP.

Event-driven, non-blocking I/O with PHP. ReactPHP is a low-level library for event-driven programming in PHP. At its core is an event loop, on top of

ReactPHP 8.5k Jan 8, 2023
Asynchronous coroutines for PHP 7.

Recoil An asynchronous coroutine kernel for PHP 7. composer require recoil/recoil The Recoil project comprises the following packages: recoil/api - T

Recoil 787 Dec 8, 2022
PHP 7.4 EventStore Implementation

Prooph Event Store Common classes and interface for Prooph Event Store implementations. Installation You can install prooph/event-store via composer b

null 532 Dec 9, 2022
Reactive extensions for PHP.

This package is abandoned. Use https://github.com/ReactiveX/RxPHP instead Rx.PHP Reactive extensions for PHP. The reactive extensions for PHP are a se

Alexander 208 Apr 6, 2021
Golang's defer statement for PHP

PHP Defer A defer statement originally comes from Golang. This library allows you to use defer functionality in PHP code. Usage <?php defer($context,

null 249 Dec 31, 2022
Reactive extensions for PHP

RxPHP Reactive extensions for PHP. The reactive extensions for PHP are a set of libraries to compose asynchronous and event-based programs using obser

ReactiveX 1.6k Dec 12, 2022
PHP Application using DDD CQRS Event Sourcing with Hexagonal Architecture

PHP Application using DDD CQRS Event Sourcing with Hexagonal Architecture Application built with Ecotone Framework and powered by integrations with Pr

EcotoneFramework 65 Dec 27, 2022
Revolt is a rock-solid event loop for concurrent PHP applications.

Revolt is a rock-solid event loop for concurrent PHP applications.

Revolt PHP 586 Jan 2, 2023
🚀 Coroutine-based concurrency library for PHP

English | 中文 Swoole is an event-driven asynchronous & coroutine-based concurrency networking communication engine with high performance written in C++

Swoole Project 17.7k Jan 5, 2023
A non-blocking concurrency framework for PHP applications. 🐘

Amp is a non-blocking concurrency framework for PHP. It provides an event loop, promises and streams as a base for asynchronous programming. Promises

Amp 3.8k Jan 6, 2023
A non-blocking concurrency framework for PHP applications. 🐘

Amp is a non-blocking concurrency framework for PHP. It provides an event loop, promises and streams as a base for asynchronous programming. Promises

Amp 3.8k Jan 4, 2023
PHP application-level database locking mechanisms to implement concurrency control patterns.

PHP DB Locker Introduction PHP application-level database locking mechanisms to implement concurrency control patterns. Supported drivers: Postgres In

cybercog 3 Sep 29, 2022
PHP Coroutine HTTP client - Swoole Humanization Library

PHP Coroutine HTTP client - Swoole Humanization Library

swlib 973 Dec 17, 2022