Erro aun tentar executar o php abaixo:
<?php
use React\EventLoop\Factory;
use React\Stream\ReadableResourceStream;
require_once 'vendor/autoload.php';
$loop = Factory::create();
$stream = new ReadableResourceStream(fopen('arquivo.txt', 'r'), $loop);
$stream->on('data', function (string $data) {
echo $data;
});
$loop->run();
Erro:
PS D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial> php react-io-nb.php
PHP Fatal error: Uncaught RuntimeException: Unable to set stream resource to non-blocking mode in D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial\vendor\react\stream\src\ReadableResourceStream.php:58
Stack trace:
#0 D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial\react-io-nb.php(10): React\Stream\ReadableResourceStream->__construct(Resource id #29, Object(React\EventLoop\StreamSelectLoop))
#1 {main}
thrown in D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial\vendor\react\stream\src\ReadableResourceStream.php on line 58
Fatal error: Uncaught RuntimeException: Unable to set stream resource to non-blocking mode in D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial\vendor\react\stream\src\ReadableResourceStream.php:58
Stack trace:
#0 D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial\react-io-nb.php(10): React\Stream\ReadableResourceStream->__construct(Resource id #29, Object(React\EventLoop\StreamSelectLoop))
#1 {main}
thrown in D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial\vendor\react\stream\src\ReadableResourceStream.php on line 58
Vi que temos 2 posts relatando o mesmo problema o mais recente aponta para o mais antigo, onde segui as sugestões mas não resolveu o problema. Não sei se os colegas conseguiram resolver no ambiente em que estavam ou tiveram que partir para outro ambiente de desenvolvimento para conseguir dar andamento.
Conforme sugestão no questionamento mais antigo incluí o caminho completo do arquivo:
<?php
use React\EventLoop\Factory;
use React\Stream\ReadableResourceStream;
require_once 'vendor/autoload.php';
$loop = Factory::create();
$stream = new ReadableResourceStream(fopen(__DIR__ . '\arquivo.txt', 'r'), $loop);
$stream->on('data', function (string $data) {
echo $data;
});
$loop->run();
Mas obtive o mesmo erro. A outra sugestão era de atualizar o PHP para a versão 8, mas estou com a versão 8.0.9:
PS D:\DEV\alura\php_reativo\1960-php-reativo-projeto-inicial> php -v
PHP 8.0.9 (cli) (built: Jul 29 2021 14:12:19) ( ZTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
Estou num Windows 10 Pro, utilizando o Visual Studio Code, o caminho até o arquivo não tem caracteres especiais, e o script da aula anterior, funcionou normalmente, abrindo e lendo o mesmo arquivo em questão.
Acredito que também vou ter que partir para outro ambiente de desenvolvimento mas é intrigante ter funcionado no script anterior, sem o React e com ele dar este problema.
Obs.: segui a aula apenas com o servidor http e o socket, estes sem problema.