# Discussion - PHP with distributed programming features.

- Thread: https://externals.io/message/121486
- Original archive: https://news-web.php.net/php.internals/121486
- Started by juan carlos morales on 2023-10-27T11:38:15+00:00
- Messages: 7
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #121486 — juan carlos morales — 2023-10-27T11:38:15+00:00

URL: https://externals.io/message/121486#121486

Imagine a request comes to NgInx, then we process the request in PHP
.... suddenly while execution of PHP is running, we dont have more
resources in the server , so we need to process that PHP code on other
server with more resources.

How can we "move" the complete PHP process to another server with more
resources and then send back the result ?

this is like having a distributed php infrastructure, behaving in a dynamic way.

how can we achieve something like this?

or maybe one piece of code needs to run in another server because of
resources or something like that, like a function for example, only
running one function in a different host and then come back to the
mother one.

My question is .... what do we need to provide PHP some functionality
like the distributed programming languages?

It could be achieve with long running PHP instances and using MPI for
example (I imagine) but ... ideas on this ? Maybe I am crazy

---

## #121487 — Robert Landers — 2023-10-27T13:51:14+00:00

URL: https://externals.io/message/121486#121487 · In reply to: #121486

On Fri, Oct 27, 2023 at 1:38 PM juan carlos morales
<dev.juan.morales@gmail.com> wrote:
>
> Imagine a request comes to NgInx, then we process the request in PHP
> .... suddenly while execution of PHP is running, we dont have more
> resources in the server , so we need to process that PHP code on other
> server with more resources.
>
> How can we "move" the complete PHP process to another server with more
> resources and then send back the result ?
>
> this is like having a distributed php infrastructure, behaving in a dynamic way.
>
> how can we achieve something like this?
>
> or maybe one piece of code needs to run in another server because of
> resources or something like that, like a function for example, only
> running one function in a different host and then come back to the
> mother one.
>
> My question is .... what do we need to provide PHP some functionality
> like the distributed programming languages?
>
> It could be achieve with long running PHP instances and using MPI for
> example (I imagine) but ... ideas on this ? Maybe I am crazy
>
> --
> 
> To unsubscribe, visit: https://www.php.net/unsub.php
>

You mean, like an API call to an instance running on another machine?
I imagine that's the simple, non-technical solution.

To what you're imagining (I think), I've been working on DurablePHP
(https://github.com/bottledcode/durable-php) which can already kinda
do that (using fibers to execute code elsewhere, then return back --
or not). It's nowhere near production-ready, but its a fun project and
already running some interesting toy-projects around the house. But it
has a number of issues left to iron out (particularly around the
serialization of exceptions and migrating workloads from hot-shards).
For an MVP/POC of the idea, it works pretty well.


Robert Landers
Software Engineer
Utrecht NL

---

## #121488 — nesk@xakep.ru — 2023-10-27T13:58:55+00:00

URL: https://externals.io/message/121486#121488 · In reply to: #121486

>Пятница, 27 октября 2023, 14:38 +03:00 от juan carlos morales <dev.juan.morales@gmail.com>:
> 
>Imagine a request comes to NgInx, then we process the request in PHP
>.... suddenly while execution of PHP is running, we dont have more
>resources in the server , so we need to process that PHP code on other
>server with more resources.
>
>How can we "move" the complete PHP process to another server with more
>resources and then send back the result ?
>
>this is like having a distributed php infrastructure, behaving in a dynamic way.
>
>how can we achieve something like this?
>
>or maybe one piece of code needs to run in another server because of
>resources or something like that, like a function for example, only
>running one function in a different host and then come back to the
>mother one.
>
>My question is .... what do we need to provide PHP some functionality
>like the distributed programming languages?
>
>It could be achieve with long running PHP instances and using MPI for
>example (I imagine) but ... ideas on this ? Maybe I am crazy
>
>--
>
>To unsubscribe, visit:  https://www.php.net/unsub.php
 
Hello!

nginx connects to fpm using the fcgi protocol via sockets. All you need to do is create a socket with roundrobin (or like that), which will delegate the request to a specific fpm socket.

Or don’t reinvent the wheel, since nginx itself copes with this (with balancing) perfectly in reverse proxy mode =))
 
--
Kirill Nesmeyanov

---

## #121499 — juan carlos morales — 2023-10-28T17:54:15+00:00

URL: https://externals.io/message/121486#121499 · In reply to: #121488

El El vie, 27 de oct. de 2023 a la(s) 10:59, Kirill Nesmeyanov <
nesk@xakep.ru> escribió:

>
> > […]
> dev.juan.morales@gmail.com>:
> > […]
> dynamic way.
> > […]
>
> Hello!
>
> nginx connects to fpm using the fcgi protocol via sockets. All you need to
> do is create a socket with roundrobin (or like that), which will delegate
> the request to a specific fpm socket.
>
> Or don’t reinvent the wheel, since nginx itself copes with this (with
> balancing) perfectly in reverse proxy mode =))
>
> --
> Kirill Nesmeyanov
>




What I mean is more about … migrating a running php instance to another
node or another php instance, in fact your php code is running, suddenly we
Need to move to another node, how to do it?

---

## #121501 — Jordan LeDoux — 2023-10-28T22:25:04+00:00

URL: https://externals.io/message/121486#121501 · In reply to: #121499

On Sat, Oct 28, 2023 at 10:54 AM juan carlos morales <
dev.juan.morales@gmail.com> wrote:

>
>
> What I mean is more about … migrating a running php instance to another
> node or another php instance, in fact your php code is running, suddenly we
> Need to move to another node, how to do it?
>

This seems less like a discussion about a PHP feature and more like you
asking internals for tech support at work, honestly. As far as I know,
there isn't a way to do what you're asking, because you can accomplish the
same thing much easier by designing your application better to make API
calls to services, which is what people have already suggested. The PHP way
to handle the root cause of your problem (too many resources being used on
a single machine) is to divide the application into services and use APIs,
often through sockets, the delegate work to those services.

There are also other ways of handling this common problem in web
application architecture. You can break up the request into multiple
requests on the client side so that the user sees progress happen in
chunks. You can use tools like RabbitMQ or other queuing services to
perform certain long-running tasks asynchronously. You can use more
powerful hardware or provision more capable nodes.

In fact, several of these actually fall under the Actor/Object or Dataflow
model of implementing Distributed Programming. What PHP does not support is
the Distributed Shared Memory model of implementing Distributed Programming
(which is what you are asking about apparently) because doing so would
almost certainly make PHP worse at the things it is well suited for, would
massively complicate the work of maintaining and developing the language
for the contributors to the language, and would be a massive undertaking to
implement in the first place.

PHP has distributed programming features. In fact, all of the suggestions
you have received so far ARE ways of doing distributed programming
features. But internals is not your, or my, or anyone else's personal tech
support channel, and personally it feels like you haven't explained what it
is you want to discuss with internals about improving or changing PHP's
support for distributed programming. Are you interested in working on an
RFC to clone a PHP process onto a remote box? I can't imagine that would
get much support here, or be something that is very simple to do.

Jordan

---

## #121502 — juan carlos morales — 2023-10-28T23:35:43+00:00

URL: https://externals.io/message/121486#121502 · In reply to: #121501

El El sáb, 28 de oct. de 2023 a la(s) 19:25, Jordan LeDoux <
jordan.ledoux@gmail.com> escribió:

>
>
> On Sat, Oct 28, 2023 at 10:54 AM juan carlos morales <
> dev.juan.morales@gmail.com> wrote:
>
> > […]
>
> This seems less like a discussion about a PHP feature and more like you
> asking internals for tech support at work, honestly. As far as I know,
> there isn't a way to do what you're asking, because you can accomplish the
> same thing much easier by designing your application better to make API
> calls to services, which is what people have already suggested. The PHP way
> to handle the root cause of your problem (too many resources being used on
> a single machine) is to divide the application into services and use APIs,
> often through sockets, the delegate work to those services.
>
> There are also other ways of handling this common problem in web
> application architecture. You can break up the request into multiple
> requests on the client side so that the user sees progress happen in
> chunks. You can use tools like RabbitMQ or other queuing services to
> perform certain long-running tasks asynchronously. You can use more
> powerful hardware or provision more capable nodes.
>
> In fact, several of these actually fall under the Actor/Object or Dataflow
> model of implementing Distributed Programming. What PHP does not support is
> the Distributed Shared Memory model of implementing Distributed Programming
> (which is what you are asking about apparently) because doing so would
> almost certainly make PHP worse at the things it is well suited for, would
> massively complicate the work of maintaining and developing the language
> for the contributors to the language, and would be a massive undertaking to
> implement in the first place.
>
> PHP has distributed programming features. In fact, all of the suggestions
> you have received so far ARE ways of doing distributed programming
> features. But internals is not your, or my, or anyone else's personal tech
> support channel, and personally it feels like you haven't explained what it
> is you want to discuss with internals about improving or changing PHP's
> support for distributed programming. Are you interested in working on an
> RFC to clone a PHP process onto a remote box? I can't imagine that would
> get much support here, or be something that is very simple to do.
>
> Jordan
>

>
Hello Jordan, thanks for the reply. When I read you, I have the feeling
that you are a little angry about my question, please dont.

It is a very honest question, that do belong to the internals, because if
PHP does not have a way to do it, I would like to think a way to do it
(despite the fact someone believes is useful or not, it is just me).

So again, thanks!, dont get mad :D, and I will come back later on this
topic, in a more clear way, maybe I am not expressing myself clearly.

Regards

---

## #121503 — Jordan LeDoux — 2023-10-29T03:30:32+00:00

URL: https://externals.io/message/121486#121503 · In reply to: #121502

On Sat, Oct 28, 2023 at 4:35 PM juan carlos morales <
dev.juan.morales@gmail.com> wrote:

>
>
> El El sáb, 28 de oct. de 2023 a la(s) 19:25, Jordan LeDoux <
> jordan.ledoux@gmail.com> escribió:
>
> > […]
>
> > […]
> Hello Jordan, thanks for the reply. When I read you, I have the feeling
> that you are a little angry about my question, please dont.
>
> It is a very honest question, that do belong to the internals, because if
> PHP does not have a way to do it, I would like to think a way to do it
> (despite the fact someone believes is useful or not, it is just me).
>
> So again, thanks!, dont get mad :D, and I will come back later on this
> topic, in a more clear way, maybe I am not expressing myself clearly.
>
> Regards
>

I'm not angry at all, I just wanted to focus in on a discussion that is
relevant to the internals mailing list. Most of the ideas here, including
the ones I've proposed, come from our own experiences and there's nothing
wrong with that. But I didn't see anything that looked like a discussion
and I wanted to be clear about what I think this list is for, and what kind
of discussions might be productive.

I don't think that what you are talking about would be very useful, because
I expect that it would be complicated for very little benefit. But if you
think this is a way to improve the language, then I would listen. I just
wasn't hearing that.

It is also possible I am not understanding very well.

Jordan
