Join 4,000+ others and never miss out on new tips, tutorials, and more.
4.x is outdated, please check the latest version 22.x
Latest version:
pecl install openswoole-22.1.2
<?php Swoole\Coroutine::create(callable $callback, ...$params): int|false
The function will be executed within the coroutine.
The array of params of the callback function
Create and execute the closure function in a coroutine. A coroutine is a light weight thread running within a Linux process.
Go
can be used to create new coroutine which is the short name of Swoole\Coroutine::create
. Co
is the short name of Swoole\Coroutine.
Coroutines must be executed within a coroutine context.
Co\run
can be used to create a context to execute coroutines.
A coroutine context is created for each callback function of Swoole Server
.
Since version 4.1.0, you can use any IO libraries using php_stream
within a coroutine context.
Since version 4.7.0, Coroutine\go()
and Swoole\Coroutine::create
returns the ID of the created coroutine.
Supported libraries:
Not supported:
Mutliple corotuines created with go
are executed concurrently.
<?php
Co\run(function() {
go(function () {
co::sleep(3);
go(function () {
co::sleep(2);
echo "co[3] end\n";
});
echo "co[2] end\n";
});
co::sleep(1);
echo "co[1] end\n";
});
Each coroutine use 8KB memory stack to store variables by default in PHP 7.2+.
<?php
Co\run(function () {
co::usleep(500000);
echo "hello";
go("test");
go([$object, "method"]);
});