yea my bad, it looks open source :D
yea my bad, it looks open source :D
Then maybe I got confused sorry. Somebody mentioned it and then the post was saying it’s a service I thought it wasn’t open. Will check it properly later. Shouldn’t have spoke so quickly I guess
However it does not look like it is open source.
Isn’t that a (implementation) detail beyond the point of uselessness though? The big point for me is there. To keep it with the metaphor, that tree is also quite a complex structure, yet still useless.
At a first level it certainly is an issue with PHP, but PHP was also designed by a human. That design comes with its own problems right? I guess what I said is just a generalisation of PEBKAC as all (mostly all) software is designed by some human. Fact that it’s a different chair may as well be considered not a PEBKAC ? Yes it’s philosophical or simply which perspective you choose to see.
Haven’t played with amphp/parallel but maybe worth a look to see how/if sockets are shared there.
Glad to hear it. All of it actually. Sounds you are content with it now.
Had to Google PEBKAC. Aren’t all problems like that?
However let me just bring into mind that we recently defederated from some Lemmy instances and for which reasons we did that (as beehaw I mean).
Friendica, I believe, federates their groups. You can see them from mastodon as a user. I guess in AP vocabulary they are an actor. You can post to the group from mastodon too.
Also how’s the setup? You setup for example 5 max children in fpm and 5 persistent connections? Per server? So your overall connections to the db server will be 5x your server instances?
If you setup 5 fpm children and less connections, one child will eventually reuse from another, but only when the connection is free (does not do a query for another process or pdo does not consume a resultset). If it tries to do a query at that time it will have to wait and it will block. This is my understanding. Also how you do transactions with persistent connections?
This has evolved into such an interesting conversation.
You can check with is_resource maybe?
With the single process, you can cache queries in memory depending on how the data change for example and the frequency they have.
The manual https://www.php.net/manual/en/pdo.connections.php
Has some interesting notes and also
https://www.php.net/manual/en/function.pg-connect.php
Mentions a force_new kind of setting if you need. I think not PDO but the constant you might be able to pass.
Also SO has some stuff users say
Personally, I don’t try to optimize so hard in PHP (5 to 10ms due to db connection). There is always an improvement on the way things work, like how the code works that would probably give you a magnitude of performance. Just saying!
Also, to work with persistent connections you will have to have a pool right? Because when you query from instance 1, the connection is not available until you consume the result set. Or is that only for MySQL?
It’s not that there isn’t the option, it’s just that I don’t know how to help you. MySQL has an option to reconnect, I suppose might be the same for postgres?
The single running process that was so easily dismissed, could save tons of queries, for example! Sorry I keep thinking about that direction
Fair point.
However why do you need persistent connections ? I am thinking that the growing rate of the connections should be very low as the instances increase, given that the queries are quick.
I haven’t used persistent connections although I have been tempted in the past. I believe, if you haven’t used it before, it might come with more trouble than it solves.
As an alternative I could propose using amphp (or maybe react PHP) which will let you handle a pool of connections in a single long running process. But it’s a bigger change really, the more I think of it.
I think that for example the search feature has nothing to do with activity pub but it’s a feature of each of those software that are using activity pub (Lemmy, mastodon etc). I would guess it operates on those internal structures each of those implementations are using.