Re: PHP True Async
| From: | Rob Landers | Date: | Fri, 14 Feb 2025 15:30:37 +0000 |
| Subject: | Re: PHP True Async | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-126417@lists.php.net to get a copy of this message | ||
On Fri, Feb 14, 2025, at 16:18, Edmond Dantes wrote:
> > Yeah we are actually planning better API for this supporting epoll and kqueu which is
> > long over due. There are other use cases for this so hopefully it will get prioritised soon.
> Oh, it would be absolutely great if PHP used a better abstraction for I/O waiting!
>
> > You could still achieve this in extensions. But if you really wanted to have some main
> > part, then it should rather go to main/ like streams and other similar stuff.
> Of course, this will need some thought.
>
>> I have got some additional feedback from our discussion that we just had with the PHP
>> foundation devs. *It was that it looks like an async/await implementation with fiber switching which
>> is something that was explicitly decided not to be done in fibers RFC* -
>> https://wiki.php.net/rfc/fibers (read FAQ). The reasoning was that
>> this should be done in user space. So you should properly describe in the RFC what this offers
>> compare to user space variants (revolt/react/amp). There were also some concerns that it would makes
>> things harder to debug in internal implementation so this should be also addressed in the RFC. It
>> should be noted that Fibers RFC did not preclude introduction of such extensions to the core but you
>> will likely need describe it in the RFC and show that there are good reasons to include.
>
> Unfortunately, I don’t know much about what happened during the adoption of Fibers, but I
> remember that the situation was not ideal. I don’t know why that decision was made.
>
> For me, as a developer, the ultimate criterion is the code itself. If a solution makes the code
> better, simpler, and reduces the number of lines, then it’s a good solution. If a solution forces
> developers to repeatedly write the same boilerplate code, including entire MySQL/PostgreSQL drivers,
> then I can’t consider it a rational decision from a development perspective—though, of course,
> there could be other reasons, such as financial constraints or lack of resources. Or look at
> Swoole—it has to override dozens of PHP functions. Even worse, it recently started literally
> copying entire extensions just for a few lines of code... This does not look like a "good
> solution."
>
> AMPHP and Revolt are talented projects, but they are not part of the language itself. This
> means that PHP extensions cannot call user-mode code and rely on it as a standard, unlike how Rust
> extensions do. Of course, from C, you can call any user-mode function, but that doesn't seem
> like the right approach. Especially since PHP is a high-level language, which imposes a
> responsibility for consistency in its paradigm.
>
> Regarding debugging—over the past three years, there have been no debugging issues with
> AMPHP. Consequently, there shouldn’t be any, since this project does not modify the Fiber
> mechanism itself. It only extends it to make the tool more complete and fully functional.
>
> And this is precisely the main reason why I’m writing these lines. As a PHP developer, I see
> that the language is not truly complete when it comes to concurrent programming, and I am genuinely
> surprised that this has not been addressed yet. How did this happen?
>
> Have a nice day!
>
> Ed.
>
>
>>
I'm reminded of Rowan's comment here: Why did fibers get added to php core over something
more fleshed out like swoole? - Externals <https://externals.io/message/121291#121315>
(https://externals.io/message/121291#121315)
> Sometimes the answer to "why doesn't X do Y?" is just "because
> nobody's stepped forward to implement it yet"; sometimes it's "nobody's
> worked out how to do it without breaking Z"; in which case, feel free to volunteer that time,
> or solve that issue. But, yes, sometimes it's "because we had a long and tiring debate,
> and ended up with a compromise that nobody really likes"; or "because the lack of official
> leadership and a relatively high turnover of contributors makes us pretty bad at longer-term
> planning".
It pretty much sums it up (also, you can always search the mailing list archives for previous
discussions on these topics).
— Rob