> Edmond Dantes <[email protected]> hat am 22.11.2025 11:37 CET geschrieben:
> 
>  
> Hello
> 
> > I expect that's already a good improvement for many use cases to read 
> > multiple files in parallel, run multiple queries in parallel, etc.
> 
> I see. You want to get several promises to wait for?
> Then there is a good way to do it without additional functions:
> 
> ```php
> $promise1 = spawn(file_get_content(...), "file1.txt");
> $promise2 = spawn(file_get_content(...), "file2.txt");
> $promise3 = spawn(file_get_content(...), "file3.txt");
> ```
> 
> This is equivalent because a coroutine is a Future. In the same way,
> you can turn any other function into a Promise without creating a
> separate API.
> 
> There is a nuance regarding resources. And in certain scenarios,
> creating an array of Promises in another way can save memory. For
> example, a scenario where you need to handle a large array of sockets.
> Such cases require a special API.
> 
> ---
> Ed

Hello,

function return types should not depend on the outside context (spawn, hook, 
ini, etc.) because when the code gets more complex, it's very hard to find the 
outside context.

So file_get_contents() should always return string|false, 
file_get_contents_async() should always return a promise object.

From the example I would expect it like this:

$promise1 = file_get_content_async("file1.txt");
$promise2 = file_get_content_async("file2.txt");
$promise3 = file_get_content_async("file3.txt");

// do sth else

$content1 = $promise->await();
$content2 = $promise->await();
$content3 = $promise->await();

PHP got very successful by making things easier than in C, this should be the 
path to continue.

Best Regards
Thomas

Reply via email to