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-fpm

Para 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:



Teste: crie um arquivo de nome test.php e insira o seguinte conteúdo:
<?php
use Swoole\Coroutine\System;

final class Test
{
public function __invoke(int $i): void
{
$start = microtime(true);
System::sleep(1);
$timeElapsedSecs = microtime(true) - $start;
echo "job $i --> duration {$timeElapsedSecs}\n";
}
}

for ($i = 0; $i < 10; $i++) {
go(new Test, $i);
}

Swoole só pode ser executado no PHP CLI, então rode com o comando: $ php test.php e verá o seguinte (similar) output:

$ php phpinfo.php 
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

tigoo disse…
estou com bastante dificuldade em instalar no pc win 10,
Não uso Windows, mas veja se essa solução te ajuda: https://www.php.net/manual/pt_BR/swoole.installation.php#125381

Postagens mais visitadas deste blog

Configurar teclado americano com acentuação em português + Ç no Ubuntu 18.04LTS e 20.04LTS

Como instalar a impressora Epson L395 via wi-fi no Ubuntu 18.04 LTS e Ubuntu 20.04 LTS