Instalando o Swoole no PHP 7.4 (nativo) do Ubuntu 20.04LTS
$ sudo mkdir -p /tmp/pear/cache
$ sudo pecl channel-update pecl.php.net
$ sudo vi /usr/share/php/PEAR/REST.php
Modifique a linha 187 para corrigir um bug (adicione o trecho em negrito), então a linha deverá ficar assim:
if ($cachettl && is_array($cacheid) && time() - $cacheid['age'] < $cachettl) {
Se funcionou o resultado do seguinte comando não deve apresentar erros:
$ sudo pecl search swoole
Sem erros, execute a instalação do swoole:
$ sudo pecl install swoole
Instalação concluída, vamos testar: adicione a extensão do swoole no seu PHP:
$ echo "extension=swoole.so" > /etc/php/7.4/mods-available/swoole.ini
$ sudo ln -s /etc/php/7.4/mods-available/swoole.ini /etc/php/7.4/cli/conf.d/10-swoole.ini
$ sudo systemctl restart nginx php7.4-fpmPara saber se deu certo, execute $ php --ri swoole ou crie um arquivo com o seguinte conteúdo e verifique se o swoole aparece no phpinfo:
Swoole só pode ser executado no PHP CLI, então rode com o comando: $ php test.php e verá o seguinte (similar) output:
PHP Warning: go(): Using Xdebug in coroutines is extremely dangerous, please notice that it may lead to coredump! in /home/rodrigo/Projects/test.php on line 16
PHP Stack trace:
PHP 1. {main}() /home/rodrigo/Projects/test.php:0
PHP 2. go() /home/rodrigo/Projects/test.php:16
job 0 --> duration 1.0023310184479
job 9 --> duration 1.0023629665375
job 8 --> duration 1.0024178028107
job 7 --> duration 1.0024580955505
job 6 --> duration 1.0024979114532
job 5 --> duration 1.0025351047516
job 4 --> duration 1.0025689601898
job 3 --> duration 1.0026028156281
job 2 --> duration 1.0026409626007
job 1 --> duration 1.0026779174805
É só isso!
Fonte: https://www.swoole.co.uk/docs/get-started/installation
Dica: se você utiliza VSCode com o Swoole, você terá warnings de tipos não definido; para resolver isso adicione a seguinte library ao seu projeto: https://github.com/swoole/ide-helper , isso se faz necessário porque o stubs e o swoole não são integrados no vscode-intelephense.
Comentários